<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::outofcore::OutofcoreOctreeBaseNode&lt; ContainerT, PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-attribs">静态 Public 属性</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pro-static-attribs">静态 Protected 属性</a> &#124;
<a href="#friends">友元</a> &#124;
<a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::outofcore::OutofcoreOctreeBaseNode&lt; ContainerT, PointT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html" title="OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree,...">OutofcoreOctreeBaseNode</a> Class internally representing nodes of an outofcore octree, with accessors to its data via the <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a> class or <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_ram_container.html">pcl::outofcore::OutofcoreOctreeRamContainer</a> class, whichever it is templated against. <br  />
  
 <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="octree__base__node_8h_source.html">octree_base_node.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::outofcore::OutofcoreOctreeBaseNode&lt; ContainerT, PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.png" usemap="#pcl::outofcore::OutofcoreOctreeBaseNode_3C_20ContainerT_2C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::outofcore::OutofcoreOctreeBaseNode_3C_20ContainerT_2C_20PointT_20_3E_map" name="pcl::outofcore::OutofcoreOctreeBaseNode_3C_20ContainerT_2C_20PointT_20_3E_map">
<area href="classpcl_1_1octree_1_1_octree_node.html" title="Abstract octree node class" alt="pcl::octree::OctreeNode" shape="rect" coords="0,0,379,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:ad72c9b5b1801518171d2be67cc4f97d8"><td class="memItemLeft" align="right" valign="top"><a id="ad72c9b5b1801518171d2be67cc4f97d8"></a>
typedef <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base.html">OutofcoreOctreeBase</a>&lt; <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>octree_disk</b></td></tr>
<tr class="separator:ad72c9b5b1801518171d2be67cc4f97d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af302197f5784238c1d9b44f86a21d1da"><td class="memItemLeft" align="right" valign="top"><a id="af302197f5784238c1d9b44f86a21d1da"></a>
typedef <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>octree_disk_node</b></td></tr>
<tr class="separator:af302197f5784238c1d9b44f86a21d1da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2eed6155fc75aad72e84d0ffd225464"><td class="memItemLeft" align="right" valign="top"><a id="aa2eed6155fc75aad72e84d0ffd225464"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, Eigen::aligned_allocator&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointTVector</b></td></tr>
<tr class="separator:aa2eed6155fc75aad72e84d0ffd225464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32499caa704bf89b3ad3b4bf6d420689"><td class="memItemLeft" align="right" valign="top"><a id="a32499caa704bf89b3ad3b4bf6d420689"></a>
typedef pcl::octree::node_type_t&#160;</td><td class="memItemRight" valign="bottom"><b>node_type_t</b></td></tr>
<tr class="separator:a32499caa704bf89b3ad3b4bf6d420689"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a6abe8eec3ce00c880785f9b9726bf95b"><td class="memItemLeft" align="right" valign="top"><a id="a6abe8eec3ce00c880785f9b9726bf95b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a6abe8eec3ce00c880785f9b9726bf95b">OutofcoreOctreeBaseNode</a> ()</td></tr>
<tr class="memdesc:a6abe8eec3ce00c880785f9b9726bf95b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor; sets pointers for children and for bounding boxes to 0 <br /></td></tr>
<tr class="separator:a6abe8eec3ce00c880785f9b9726bf95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a759ce1087fc4720c7123ac13fa26bd62"><td class="memItemLeft" align="right" valign="top"><a id="a759ce1087fc4720c7123ac13fa26bd62"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a759ce1087fc4720c7123ac13fa26bd62">OutofcoreOctreeBaseNode</a> (const Eigen::Vector3d &amp;bb_min, const Eigen::Vector3d &amp;bb_max, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base.html">OutofcoreOctreeBase</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *const tree, const boost::filesystem::path &amp;root_name)</td></tr>
<tr class="memdesc:a759ce1087fc4720c7123ac13fa26bd62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create root node and directory <br /></td></tr>
<tr class="separator:a759ce1087fc4720c7123ac13fa26bd62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbabae5c3e3695ef13c9cb4d15fcbecc"><td class="memItemLeft" align="right" valign="top"><a id="acbabae5c3e3695ef13c9cb4d15fcbecc"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#acbabae5c3e3695ef13c9cb4d15fcbecc">~OutofcoreOctreeBaseNode</a> ()</td></tr>
<tr class="memdesc:acbabae5c3e3695ef13c9cb4d15fcbecc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will recursively delete all children calling recFreeChildrein <br /></td></tr>
<tr class="separator:acbabae5c3e3695ef13c9cb4d15fcbecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02626db7622e8b8734750987ec66f973"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a02626db7622e8b8734750987ec66f973">getBoundingBox</a> (Eigen::Vector3d &amp;min_bb, Eigen::Vector3d &amp;max_bb) const</td></tr>
<tr class="memdesc:a02626db7622e8b8734750987ec66f973"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the minimum and maximum corner of the bounding box represented by this node  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a02626db7622e8b8734750987ec66f973">更多...</a><br /></td></tr>
<tr class="separator:a02626db7622e8b8734750987ec66f973"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26b2902409eba20e122231fd25bb4a7e"><td class="memItemLeft" align="right" valign="top"><a id="a26b2902409eba20e122231fd25bb4a7e"></a>
const boost::filesystem::path &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getPCDFilename</b> () const</td></tr>
<tr class="separator:a26b2902409eba20e122231fd25bb4a7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5aa23454bc2edfdb2a9d6481c04afa59"><td class="memItemLeft" align="right" valign="top"><a id="a5aa23454bc2edfdb2a9d6481c04afa59"></a>
const boost::filesystem::path &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getMetadataFilename</b> () const</td></tr>
<tr class="separator:a5aa23454bc2edfdb2a9d6481c04afa59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b63e79a3f8ea7e49c4283dcf72fcb56"><td class="memItemLeft" align="right" valign="top"><a id="a8b63e79a3f8ea7e49c4283dcf72fcb56"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>queryFrustum</b> (const double planes[24], std::list&lt; std::string &gt; &amp;file_names)</td></tr>
<tr class="separator:a8b63e79a3f8ea7e49c4283dcf72fcb56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae318e71fd41288222e0cb4c4d878ede2"><td class="memItemLeft" align="right" valign="top"><a id="ae318e71fd41288222e0cb4c4d878ede2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>queryFrustum</b> (const double planes[24], std::list&lt; std::string &gt; &amp;file_names, const boost::uint32_t query_depth, const bool skip_vfc_check=false)</td></tr>
<tr class="separator:ae318e71fd41288222e0cb4c4d878ede2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a603715a7f8f637c95cc924753a260271"><td class="memItemLeft" align="right" valign="top"><a id="a603715a7f8f637c95cc924753a260271"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>queryFrustum</b> (const double planes[24], const Eigen::Vector3d &amp;eye, const Eigen::Matrix4d &amp;view_projection_matrix, std::list&lt; std::string &gt; &amp;file_names, const boost::uint32_t query_depth, const bool skip_vfc_check=false)</td></tr>
<tr class="separator:a603715a7f8f637c95cc924753a260271"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdacc92401e3bfc72b659894bfafb68f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#acdacc92401e3bfc72b659894bfafb68f">queryBBIncludes</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, size_t query_depth, AlignedPointTVector &amp;dst)</td></tr>
<tr class="memdesc:acdacc92401e3bfc72b659894bfafb68f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively add points that fall into the queried bounding box up to the <b>query_depth</b>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#acdacc92401e3bfc72b659894bfafb68f">更多...</a><br /></td></tr>
<tr class="separator:acdacc92401e3bfc72b659894bfafb68f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad86d616b7a5ff8123c28a7a0d19e96cf"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad86d616b7a5ff8123c28a7a0d19e96cf">queryBBIncludes</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, size_t query_depth, const pcl::PCLPointCloud2::Ptr &amp;dst_blob)</td></tr>
<tr class="memdesc:ad86d616b7a5ff8123c28a7a0d19e96cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively add points that fall into the queried bounding box up to the <b>query_depth</b>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad86d616b7a5ff8123c28a7a0d19e96cf">更多...</a><br /></td></tr>
<tr class="separator:ad86d616b7a5ff8123c28a7a0d19e96cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6f84897e582d599020c1947eafe5500"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ab6f84897e582d599020c1947eafe5500">queryBBIncludes_subsample</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, boost::uint64_t query_depth, const double percent, AlignedPointTVector &amp;v)</td></tr>
<tr class="memdesc:ab6f84897e582d599020c1947eafe5500"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively add points that fall into the queried bounding box up to the <b>query_depth</b>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ab6f84897e582d599020c1947eafe5500">更多...</a><br /></td></tr>
<tr class="separator:ab6f84897e582d599020c1947eafe5500"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a282a76077affce49a0b99116c644fd09"><td class="memItemLeft" align="right" valign="top"><a id="a282a76077affce49a0b99116c644fd09"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>queryBBIncludes_subsample</b> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, boost::uint64_t query_depth, const pcl::PCLPointCloud2::Ptr &amp;dst_blob, double percent=1.0)</td></tr>
<tr class="separator:a282a76077affce49a0b99116c644fd09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30cabf53c79e7ced285f6071c0a0e4f4"><td class="memItemLeft" align="right" valign="top"><a id="a30cabf53c79e7ced285f6071c0a0e4f4"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a30cabf53c79e7ced285f6071c0a0e4f4">queryBBIntersects</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, const boost::uint32_t query_depth, std::list&lt; std::string &gt; &amp;file_names)</td></tr>
<tr class="memdesc:a30cabf53c79e7ced285f6071c0a0e4f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursive acquires PCD paths to any node with which the queried bounding box intersects (at query_depth only). <br /></td></tr>
<tr class="separator:a30cabf53c79e7ced285f6071c0a0e4f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8da02065b6d179e57e22f49a8d47aef"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae8da02065b6d179e57e22f49a8d47aef">printBoundingBox</a> (const size_t query_depth) const</td></tr>
<tr class="memdesc:ae8da02065b6d179e57e22f49a8d47aef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write the voxel size to stdout at <code>query_depth</code>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae8da02065b6d179e57e22f49a8d47aef">更多...</a><br /></td></tr>
<tr class="separator:ae8da02065b6d179e57e22f49a8d47aef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70187347c2d0b3ebe1eb5822e6a1589c"><td class="memItemLeft" align="right" valign="top">virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a70187347c2d0b3ebe1eb5822e6a1589c">addDataToLeaf</a> (const AlignedPointTVector &amp;p, const bool skip_bb_check=true)</td></tr>
<tr class="memdesc:a70187347c2d0b3ebe1eb5822e6a1589c"><td class="mdescLeft">&#160;</td><td class="mdescRight">add point to this node if we are a leaf, or find the leaf below us that is supposed to take the point  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a70187347c2d0b3ebe1eb5822e6a1589c">更多...</a><br /></td></tr>
<tr class="separator:a70187347c2d0b3ebe1eb5822e6a1589c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2059e601b592f624786945d13d66396"><td class="memItemLeft" align="right" valign="top"><a id="ac2059e601b592f624786945d13d66396"></a>
virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>addDataToLeaf</b> (const std::vector&lt; const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> * &gt; &amp;p, const bool skip_bb_check=true)</td></tr>
<tr class="separator:ac2059e601b592f624786945d13d66396"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a068a8bf6a12ed5eb451d6a1ef17f07c2"><td class="memItemLeft" align="right" valign="top">virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a068a8bf6a12ed5eb451d6a1ef17f07c2">addPointCloud</a> (const pcl::PCLPointCloud2::Ptr &amp;input_cloud, const bool skip_bb_check=false)</td></tr>
<tr class="memdesc:a068a8bf6a12ed5eb451d6a1ef17f07c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a single <a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> object into the octree.  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a068a8bf6a12ed5eb451d6a1ef17f07c2">更多...</a><br /></td></tr>
<tr class="separator:a068a8bf6a12ed5eb451d6a1ef17f07c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd2f9dcfd8b297859ef0c01f0cd91153"><td class="memItemLeft" align="right" valign="top"><a id="abd2f9dcfd8b297859ef0c01f0cd91153"></a>
virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#abd2f9dcfd8b297859ef0c01f0cd91153">addPointCloud_and_genLOD</a> (const pcl::PCLPointCloud2::Ptr input_cloud)</td></tr>
<tr class="memdesc:abd2f9dcfd8b297859ef0c01f0cd91153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a single <a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> into the octree and build the subsampled LOD during construction; this method of LOD construction is <b>not</b> multiresolution. Rather, there are no redundant data. <br /></td></tr>
<tr class="separator:abd2f9dcfd8b297859ef0c01f0cd91153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e8966b1865d07a00f730beebe6a9ef9"><td class="memItemLeft" align="right" valign="top">virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9e8966b1865d07a00f730beebe6a9ef9">addDataToLeaf_and_genLOD</a> (const AlignedPointTVector &amp;p, const bool skip_bb_check)</td></tr>
<tr class="memdesc:a9e8966b1865d07a00f730beebe6a9ef9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively add points to the leaf and children subsampling LODs on the way down.  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9e8966b1865d07a00f730beebe6a9ef9">更多...</a><br /></td></tr>
<tr class="separator:a9e8966b1865d07a00f730beebe6a9ef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64e4a385bd1a8a51d069ae4cac718e5e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a64e4a385bd1a8a51d069ae4cac718e5e">writeVPythonVisual</a> (std::ofstream &amp;file)</td></tr>
<tr class="memdesc:a64e4a385bd1a8a51d069ae4cac718e5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a python visual script to <b>file</b>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a64e4a385bd1a8a51d069ae4cac718e5e">更多...</a><br /></td></tr>
<tr class="separator:a64e4a385bd1a8a51d069ae4cac718e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a793520c5608fa5834a3819b47a553e41"><td class="memItemLeft" align="right" valign="top"><a id="a793520c5608fa5834a3819b47a553e41"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>read</b> (pcl::PCLPointCloud2::Ptr &amp;output_cloud)</td></tr>
<tr class="separator:a793520c5608fa5834a3819b47a553e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a660e65cd0c4e327534911d5dd9b6eead"><td class="memItemLeft" align="right" valign="top"><a id="a660e65cd0c4e327534911d5dd9b6eead"></a>
virtual node_type_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a660e65cd0c4e327534911d5dd9b6eead">getNodeType</a> () const</td></tr>
<tr class="memdesc:a660e65cd0c4e327534911d5dd9b6eead"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pure virtual method for receiving the type of octree node (branch or leaf) <br  />
 <br /></td></tr>
<tr class="separator:a660e65cd0c4e327534911d5dd9b6eead"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a360e74ce8ce4c734028bba86c29f4976"><td class="memItemLeft" align="right" valign="top"><a id="a360e74ce8ce4c734028bba86c29f4976"></a>
virtual <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a360e74ce8ce4c734028bba86c29f4976">deepCopy</a> () const</td></tr>
<tr class="memdesc:a360e74ce8ce4c734028bba86c29f4976"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pure virtual method to perform a deep copy of the octree <br /></td></tr>
<tr class="separator:a360e74ce8ce4c734028bba86c29f4976"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa76e1c3b4c7aca04f0674f69ae33d361"><td class="memItemLeft" align="right" valign="top"><a id="aa76e1c3b4c7aca04f0674f69ae33d361"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getDepth</b> () const</td></tr>
<tr class="separator:aa76e1c3b4c7aca04f0674f69ae33d361"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabcdf2cecab2918ca63126167752fff4"><td class="memItemLeft" align="right" valign="top"><a id="aabcdf2cecab2918ca63126167752fff4"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aabcdf2cecab2918ca63126167752fff4">getNumChildren</a> () const</td></tr>
<tr class="memdesc:aabcdf2cecab2918ca63126167752fff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the total number of children on disk <br /></td></tr>
<tr class="separator:aabcdf2cecab2918ca63126167752fff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d388e4988d2b1c066015bcdd757501f"><td class="memItemLeft" align="right" valign="top"><a id="a9d388e4988d2b1c066015bcdd757501f"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9d388e4988d2b1c066015bcdd757501f">getNumLoadedChildren</a> () const</td></tr>
<tr class="memdesc:a9d388e4988d2b1c066015bcdd757501f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count loaded chilren <br /></td></tr>
<tr class="separator:a9d388e4988d2b1c066015bcdd757501f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49e16dd89655afbe6daa4290e791f516"><td class="memItemLeft" align="right" valign="top"><a id="a49e16dd89655afbe6daa4290e791f516"></a>
virtual <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a49e16dd89655afbe6daa4290e791f516">getChildPtr</a> (size_t index_arg) const</td></tr>
<tr class="memdesc:a49e16dd89655afbe6daa4290e791f516"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the child in octant index_arg <br /></td></tr>
<tr class="separator:a49e16dd89655afbe6daa4290e791f516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c4732477a90b07e7806cc67d74dbc7d"><td class="memItemLeft" align="right" valign="top"><a id="a0c4732477a90b07e7806cc67d74dbc7d"></a>
virtual boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0c4732477a90b07e7806cc67d74dbc7d">getDataSize</a> () const</td></tr>
<tr class="memdesc:a0c4732477a90b07e7806cc67d74dbc7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the number of points available in the PCD file <br /></td></tr>
<tr class="separator:a0c4732477a90b07e7806cc67d74dbc7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7248bffbbaf2bdcbcfa956510359c667"><td class="memItemLeft" align="right" valign="top"><a id="a7248bffbbaf2bdcbcfa956510359c667"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>clearData</b> ()</td></tr>
<tr class="separator:a7248bffbbaf2bdcbcfa956510359c667"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
<tr class="memitem:a0e479fbbe32ce45785fe8aec9b4a3160"><td class="memItemLeft" align="right" valign="top"><a id="a0e479fbbe32ce45785fe8aec9b4a3160"></a>
static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>node_index_basename</b> = &quot;node&quot;</td></tr>
<tr class="separator:a0e479fbbe32ce45785fe8aec9b4a3160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8be5876dac1d0e0da8f7cb0b529f08a"><td class="memItemLeft" align="right" valign="top"><a id="aa8be5876dac1d0e0da8f7cb0b529f08a"></a>
static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>node_container_basename</b> = &quot;node&quot;</td></tr>
<tr class="separator:aa8be5876dac1d0e0da8f7cb0b529f08a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b412acfc74ade18e3eedeebfc5053ac"><td class="memItemLeft" align="right" valign="top"><a id="a1b412acfc74ade18e3eedeebfc5053ac"></a>
static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>node_index_extension</b> = &quot;.oct_idx&quot;</td></tr>
<tr class="separator:a1b412acfc74ade18e3eedeebfc5053ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae420ed29b5198ecd6da59e723cc68ae7"><td class="memItemLeft" align="right" valign="top"><a id="ae420ed29b5198ecd6da59e723cc68ae7"></a>
static const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>node_container_extension</b> = &quot;.oct_dat&quot;</td></tr>
<tr class="separator:ae420ed29b5198ecd6da59e723cc68ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d3c75cef6f892061b48ca63825dba98"><td class="memItemLeft" align="right" valign="top"><a id="a5d3c75cef6f892061b48ca63825dba98"></a>
static const double&#160;</td><td class="memItemRight" valign="bottom"><b>sample_percent_</b> = .125</td></tr>
<tr class="separator:a5d3c75cef6f892061b48ca63825dba98"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a1a8850aac8f22ab31cd81710536d442d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a1a8850aac8f22ab31cd81710536d442d">OutofcoreOctreeBaseNode</a> (const boost::filesystem::path &amp;directory_path, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *super, bool load_all)</td></tr>
<tr class="memdesc:a1a8850aac8f22ab31cd81710536d442d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load from disk If creating root, path is full name. If creating any other node, path is dir; throws exception if directory or metadata not found  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a1a8850aac8f22ab31cd81710536d442d">更多...</a><br /></td></tr>
<tr class="separator:a1a8850aac8f22ab31cd81710536d442d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a756b7646bdd922567d02dcd26d5a4c36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a756b7646bdd922567d02dcd26d5a4c36">init_root_node</a> (const Eigen::Vector3d &amp;bb_min, const Eigen::Vector3d &amp;bb_max, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base.html">OutofcoreOctreeBase</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *const tree, const boost::filesystem::path &amp;rootname)</td></tr>
<tr class="memdesc:a756b7646bdd922567d02dcd26d5a4c36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create root node and directory  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a756b7646bdd922567d02dcd26d5a4c36">更多...</a><br /></td></tr>
<tr class="separator:a756b7646bdd922567d02dcd26d5a4c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacb73bf2c6196978ccdd045b5b27df4a"><td class="memItemLeft" align="right" valign="top"><a id="aacb73bf2c6196978ccdd045b5b27df4a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aacb73bf2c6196978ccdd045b5b27df4a">OutofcoreOctreeBaseNode</a> (const <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> &amp;rval)</td></tr>
<tr class="memdesc:aacb73bf2c6196978ccdd045b5b27df4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">no copy construction right now <br /></td></tr>
<tr class="separator:aacb73bf2c6196978ccdd045b5b27df4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a322f20b7d829b06a0dad6a4d506ab678"><td class="memItemLeft" align="right" valign="top"><a id="a322f20b7d829b06a0dad6a4d506ab678"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a322f20b7d829b06a0dad6a4d506ab678">operator=</a> (const <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> &amp;rval)</td></tr>
<tr class="memdesc:a322f20b7d829b06a0dad6a4d506ab678"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operator= is not implemented <br /></td></tr>
<tr class="separator:a322f20b7d829b06a0dad6a4d506ab678"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f567f24e70a2f1f3e4e3760c125a794"><td class="memItemLeft" align="right" valign="top"><a id="a8f567f24e70a2f1f3e4e3760c125a794"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a8f567f24e70a2f1f3e4e3760c125a794">countNumChildren</a> () const</td></tr>
<tr class="memdesc:a8f567f24e70a2f1f3e4e3760c125a794"><td class="mdescLeft">&#160;</td><td class="mdescRight">Counts the number of child directories on disk; used to update num_children_ <br /></td></tr>
<tr class="separator:a8f567f24e70a2f1f3e4e3760c125a794"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae37a4044f08bab8a30666f8bdd335983"><td class="memItemLeft" align="right" valign="top"><a id="ae37a4044f08bab8a30666f8bdd335983"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae37a4044f08bab8a30666f8bdd335983">countNumLoadedChildren</a> () const</td></tr>
<tr class="memdesc:ae37a4044f08bab8a30666f8bdd335983"><td class="mdescLeft">&#160;</td><td class="mdescRight">Counts the number of loaded chilren by testing the <code>children_</code> array; used to update num_loaded_chilren_ internally <br /></td></tr>
<tr class="separator:ae37a4044f08bab8a30666f8bdd335983"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81981aa776d748889cd72b7146e4ffe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a81981aa776d748889cd72b7146e4ffe5">saveIdx</a> (bool recursive)</td></tr>
<tr class="memdesc:a81981aa776d748889cd72b7146e4ffe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save node's metadata to file  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a81981aa776d748889cd72b7146e4ffe5">更多...</a><br /></td></tr>
<tr class="separator:a81981aa776d748889cd72b7146e4ffe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e7ca923f6949fdbb3d461dbe9d85f22"><td class="memItemLeft" align="right" valign="top"><a id="a3e7ca923f6949fdbb3d461dbe9d85f22"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e7ca923f6949fdbb3d461dbe9d85f22">randomSample</a> (const AlignedPointTVector &amp;p, AlignedPointTVector &amp;insertBuff, const bool skip_bb_check)</td></tr>
<tr class="memdesc:a3e7ca923f6949fdbb3d461dbe9d85f22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Randomly sample point data <br /></td></tr>
<tr class="separator:a3e7ca923f6949fdbb3d461dbe9d85f22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbd17c866ef1f12d6d8b99eb33bbd61f"><td class="memItemLeft" align="right" valign="top"><a id="abbd17c866ef1f12d6d8b99eb33bbd61f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#abbd17c866ef1f12d6d8b99eb33bbd61f">subdividePoints</a> (const AlignedPointTVector &amp;p, std::vector&lt; AlignedPointTVector &gt; &amp;c, const bool skip_bb_check)</td></tr>
<tr class="memdesc:abbd17c866ef1f12d6d8b99eb33bbd61f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subdivide points to pass to child nodes <br /></td></tr>
<tr class="separator:abbd17c866ef1f12d6d8b99eb33bbd61f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaa9286ec93878ea760311e654132a3e"><td class="memItemLeft" align="right" valign="top"><a id="acaa9286ec93878ea760311e654132a3e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#acaa9286ec93878ea760311e654132a3e">subdividePoint</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, std::vector&lt; AlignedPointTVector &gt; &amp;c)</td></tr>
<tr class="memdesc:acaa9286ec93878ea760311e654132a3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subdivide a single point into a specific child node <br /></td></tr>
<tr class="separator:acaa9286ec93878ea760311e654132a3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf52eaaab45e9b3f24aefc1aae220de2"><td class="memItemLeft" align="right" valign="top">boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">addDataAtMaxDepth</a> (const AlignedPointTVector &amp;p, const bool skip_bb_check=true)</td></tr>
<tr class="memdesc:aaf52eaaab45e9b3f24aefc1aae220de2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add data to the leaf when at max depth of tree. If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">更多...</a><br /></td></tr>
<tr class="separator:aaf52eaaab45e9b3f24aefc1aae220de2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c639f9c42a10d1dd0d08d96ae764736"><td class="memItemLeft" align="right" valign="top">boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3c639f9c42a10d1dd0d08d96ae764736">addDataAtMaxDepth</a> (const pcl::PCLPointCloud2::Ptr input_cloud, const bool skip_bb_check=true)</td></tr>
<tr class="memdesc:a3c639f9c42a10d1dd0d08d96ae764736"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add data to the leaf when at max depth of tree. If <code>skip_bb_check</code> is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3c639f9c42a10d1dd0d08d96ae764736">更多...</a><br /></td></tr>
<tr class="separator:a3c639f9c42a10d1dd0d08d96ae764736"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dfc9e4699b5197e2a23d71d1d96bb18"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">intersectsWithBoundingBox</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb) const</td></tr>
<tr class="memdesc:a0dfc9e4699b5197e2a23d71d1d96bb18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether the input bounding box intersects with the current node's bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">更多...</a><br /></td></tr>
<tr class="separator:a0dfc9e4699b5197e2a23d71d1d96bb18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad88e68bf251e5f640a4517e00ae42a69"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">inBoundingBox</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb) const</td></tr>
<tr class="memdesc:ad88e68bf251e5f640a4517e00ae42a69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether the input bounding box falls inclusively within this node's bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">更多...</a><br /></td></tr>
<tr class="separator:ad88e68bf251e5f640a4517e00ae42a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a809db94b3ebf6a4bd150d129b4b1db6d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pointInBoundingBox</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, const Eigen::Vector3d &amp;point)</td></tr>
<tr class="memdesc:a809db94b3ebf6a4bd150d129b4b1db6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether <code>point</code> falls within the input bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">更多...</a><br /></td></tr>
<tr class="separator:a809db94b3ebf6a4bd150d129b4b1db6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae500a814756242e0468fae871f4cfb76"><td class="memItemLeft" align="right" valign="top"><a id="ae500a814756242e0468fae871f4cfb76"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae500a814756242e0468fae871f4cfb76">pointInBoundingBox</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p) const</td></tr>
<tr class="memdesc:ae500a814756242e0468fae871f4cfb76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests if specified point is within bounds of current node's bounding box <br /></td></tr>
<tr class="separator:ae500a814756242e0468fae871f4cfb76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af309ee9da72334d87619ce4b92cbf75b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">createChild</a> (const std::size_t idx)</td></tr>
<tr class="memdesc:af309ee9da72334d87619ce4b92cbf75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates child node <code>idx</code>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">更多...</a><br /></td></tr>
<tr class="separator:af309ee9da72334d87619ce4b92cbf75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3f660757a6708689539742b5a4b65dd"><td class="memItemLeft" align="right" valign="top"><a id="ae3f660757a6708689539742b5a4b65dd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae3f660757a6708689539742b5a4b65dd">saveMetadataToFile</a> (const boost::filesystem::path &amp;path)</td></tr>
<tr class="memdesc:ae3f660757a6708689539742b5a4b65dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write JSON metadata for this node to file <br /></td></tr>
<tr class="separator:ae3f660757a6708689539742b5a4b65dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8b1d0fb47dc71a3ddec4a2b7c16121c"><td class="memItemLeft" align="right" valign="top"><a id="ae8b1d0fb47dc71a3ddec4a2b7c16121c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae8b1d0fb47dc71a3ddec4a2b7c16121c">recFreeChildren</a> ()</td></tr>
<tr class="memdesc:ae8b1d0fb47dc71a3ddec4a2b7c16121c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method which recursively free children of this node <br /></td></tr>
<tr class="separator:ae8b1d0fb47dc71a3ddec4a2b7c16121c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a592ba5034ef1efc36a9ebaeb7d06d92a"><td class="memItemLeft" align="right" valign="top"><a id="a592ba5034ef1efc36a9ebaeb7d06d92a"></a>
boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a592ba5034ef1efc36a9ebaeb7d06d92a">size</a> () const</td></tr>
<tr class="memdesc:a592ba5034ef1efc36a9ebaeb7d06d92a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of points in the payload <br /></td></tr>
<tr class="separator:a592ba5034ef1efc36a9ebaeb7d06d92a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4158b642031dfbec31e01064a520777"><td class="memItemLeft" align="right" valign="top"><a id="ad4158b642031dfbec31e01064a520777"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>flushToDiskRecursive</b> ()</td></tr>
<tr class="separator:ad4158b642031dfbec31e01064a520777"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e2641ff660f418f576fe4962e3e44d1"><td class="memItemLeft" align="right" valign="top"><a id="a2e2641ff660f418f576fe4962e3e44d1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2e2641ff660f418f576fe4962e3e44d1">loadFromFile</a> (const boost::filesystem::path &amp;path, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> *super)</td></tr>
<tr class="memdesc:a2e2641ff660f418f576fe4962e3e44d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the nodes metadata from the JSON file <br /></td></tr>
<tr class="separator:a2e2641ff660f418f576fe4962e3e44d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a740054acdc4f823942dc51f34c79e579"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a740054acdc4f823942dc51f34c79e579">convertToXYZRecursive</a> ()</td></tr>
<tr class="memdesc:a740054acdc4f823942dc51f34c79e579"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recursively converts data files to ascii XZY files  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a740054acdc4f823942dc51f34c79e579">更多...</a><br /></td></tr>
<tr class="separator:a740054acdc4f823942dc51f34c79e579"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bc5224ba44ce4ce61b12c5a547b81d1"><td class="memItemLeft" align="right" valign="top"><a id="a6bc5224ba44ce4ce61b12c5a547b81d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a6bc5224ba44ce4ce61b12c5a547b81d1">OutofcoreOctreeBaseNode</a> (const Eigen::Vector3d &amp;bb_min, const Eigen::Vector3d &amp;bb_max, const char *dir, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *super)</td></tr>
<tr class="memdesc:a6bc5224ba44ce4ce61b12c5a547b81d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Private constructor used for children <br /></td></tr>
<tr class="separator:a6bc5224ba44ce4ce61b12c5a547b81d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9f2855808b2d61bc51d2dc56065185a"><td class="memItemLeft" align="right" valign="top"><a id="ac9f2855808b2d61bc51d2dc56065185a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ac9f2855808b2d61bc51d2dc56065185a">copyAllCurrentAndChildPointsRec</a> (std::list&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;v)</td></tr>
<tr class="memdesc:ac9f2855808b2d61bc51d2dc56065185a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies points from this and all children into a single point container (std::list) <br /></td></tr>
<tr class="separator:ac9f2855808b2d61bc51d2dc56065185a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29cb21826303a98f74754e8f39d9c699"><td class="memItemLeft" align="right" valign="top"><a id="a29cb21826303a98f74754e8f39d9c699"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>copyAllCurrentAndChildPointsRec_sub</b> (std::list&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &amp;v, const double percent)</td></tr>
<tr class="separator:a29cb21826303a98f74754e8f39d9c699"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3270af407876c73e75df3321f5ecb9ed"><td class="memItemLeft" align="right" valign="top"><a id="a3270af407876c73e75df3321f5ecb9ed"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> () const</td></tr>
<tr class="memdesc:a3270af407876c73e75df3321f5ecb9ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether or not a node has unloaded children data <br /></td></tr>
<tr class="separator:a3270af407876c73e75df3321f5ecb9ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0e74a5ac5e0bcebb80c569290c4c465"><td class="memItemLeft" align="right" valign="top"><a id="ad0e74a5ac5e0bcebb80c569290c4c465"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (bool recursive)</td></tr>
<tr class="memdesc:ad0e74a5ac5e0bcebb80c569290c4c465"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load nodes child data creating new nodes for each <br /></td></tr>
<tr class="separator:ad0e74a5ac5e0bcebb80c569290c4c465"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f8d78b9eff5c1bda626056bc296fd22"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0f8d78b9eff5c1bda626056bc296fd22">getOccupiedVoxelCentersRecursive</a> (AlignedPointTVector &amp;voxel_centers, const size_t query_depth)</td></tr>
<tr class="memdesc:a0f8d78b9eff5c1bda626056bc296fd22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a vector of occupied voxel centers  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0f8d78b9eff5c1bda626056bc296fd22">更多...</a><br /></td></tr>
<tr class="separator:a0f8d78b9eff5c1bda626056bc296fd22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae035b0551fbfcccf1b6ef0b69f197ac4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae035b0551fbfcccf1b6ef0b69f197ac4">getOccupiedVoxelCentersRecursive</a> (std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt; &amp;voxel_centers, const size_t query_depth)</td></tr>
<tr class="memdesc:ae035b0551fbfcccf1b6ef0b69f197ac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a vector of occupied voxel centers  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae035b0551fbfcccf1b6ef0b69f197ac4">更多...</a><br /></td></tr>
<tr class="separator:ae035b0551fbfcccf1b6ef0b69f197ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e584fa9e47e5d1bb7c1ec83752db20e"><td class="memItemLeft" align="right" valign="top"><a id="a3e584fa9e47e5d1bb7c1ec83752db20e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e584fa9e47e5d1bb7c1ec83752db20e">sortOctantIndices</a> (const pcl::PCLPointCloud2::Ptr &amp;input_cloud, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;indices, const Eigen::Vector3d &amp;mid_xyz)</td></tr>
<tr class="memdesc:a3e584fa9e47e5d1bb7c1ec83752db20e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts the indices based on x,y,z fields and pushes the index into the proper octant's vector; This could be overloaded with a parallelized implementation <br /></td></tr>
<tr class="separator:a3e584fa9e47e5d1bb7c1ec83752db20e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f7c8d58ca0420abf980a3485e4e37c"><td class="memItemLeft" align="right" valign="top"><a id="af0f7c8d58ca0420abf980a3485e4e37c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af0f7c8d58ca0420abf980a3485e4e37c">enlargeToCube</a> (Eigen::Vector3d &amp;bb_min, Eigen::Vector3d &amp;bb_max)</td></tr>
<tr class="memdesc:af0f7c8d58ca0420abf980a3485e4e37c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enlarges the shortest two sidelengths of the bounding box to a cubic shape; operation is done in place. <br /></td></tr>
<tr class="separator:af0f7c8d58ca0420abf980a3485e4e37c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:a2a1bf7e6015d83e1c416cf28c03ccb00"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2a1bf7e6015d83e1c416cf28c03ccb00">pointInBoundingBox</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p)</td></tr>
<tr class="memdesc:a2a1bf7e6015d83e1c416cf28c03ccb00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether <code>p</code> falls within the input bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2a1bf7e6015d83e1c416cf28c03ccb00">更多...</a><br /></td></tr>
<tr class="separator:a2a1bf7e6015d83e1c416cf28c03ccb00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72b5b9bc1e646f724e43a3c668615f58"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a72b5b9bc1e646f724e43a3c668615f58">pointInBoundingBox</a> (const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, const double x, const double y, const double z)</td></tr>
<tr class="memdesc:a72b5b9bc1e646f724e43a3c668615f58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether <code>x</code>, <code>y</code>, and <code>z</code> fall within the input bounding box  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a72b5b9bc1e646f724e43a3c668615f58">更多...</a><br /></td></tr>
<tr class="separator:a72b5b9bc1e646f724e43a3c668615f58"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a4f620ffb1ce5fdf0e2d0bd93b1617e9a"><td class="memItemLeft" align="right" valign="top"><a id="a4f620ffb1ce5fdf0e2d0bd93b1617e9a"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base.html">OutofcoreOctreeBase</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a></td></tr>
<tr class="memdesc:a4f620ffb1ce5fdf0e2d0bd93b1617e9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The tree we belong to <br /></td></tr>
<tr class="separator:a4f620ffb1ce5fdf0e2d0bd93b1617e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a796c6c8e9a51cd42d8ce7b7fefcf3261"><td class="memItemLeft" align="right" valign="top"><a id="a796c6c8e9a51cd42d8ce7b7fefcf3261"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a></td></tr>
<tr class="memdesc:a796c6c8e9a51cd42d8ce7b7fefcf3261"><td class="mdescLeft">&#160;</td><td class="mdescRight">The root node of the tree we belong to <br /></td></tr>
<tr class="separator:a796c6c8e9a51cd42d8ce7b7fefcf3261"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7538e46e8b3d89bfbd03b0e606852ccc"><td class="memItemLeft" align="right" valign="top"><a id="a7538e46e8b3d89bfbd03b0e606852ccc"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a7538e46e8b3d89bfbd03b0e606852ccc">parent_</a></td></tr>
<tr class="memdesc:a7538e46e8b3d89bfbd03b0e606852ccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">super-node <br /></td></tr>
<tr class="separator:a7538e46e8b3d89bfbd03b0e606852ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca2c713beae1004385b63b196a3b3d01"><td class="memItemLeft" align="right" valign="top"><a id="aca2c713beae1004385b63b196a3b3d01"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a></td></tr>
<tr class="memdesc:aca2c713beae1004385b63b196a3b3d01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Depth in the tree, root is 0, root's children are 1, ... <br /></td></tr>
<tr class="separator:aca2c713beae1004385b63b196a3b3d01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f2fb7fbd7be380212c99017557be57e"><td class="memItemLeft" align="right" valign="top"><a id="a9f2fb7fbd7be380212c99017557be57e"></a>
std::vector&lt; <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a></td></tr>
<tr class="memdesc:a9f2fb7fbd7be380212c99017557be57e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The children of this node <br /></td></tr>
<tr class="separator:a9f2fb7fbd7be380212c99017557be57e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c485ec11c94788d45436620fefe3402"><td class="memItemLeft" align="right" valign="top"><a id="a2c485ec11c94788d45436620fefe3402"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a></td></tr>
<tr class="memdesc:a2c485ec11c94788d45436620fefe3402"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of children on disk. This is only changed when a new node is created <br /></td></tr>
<tr class="separator:a2c485ec11c94788d45436620fefe3402"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca589546f23851a4b6e79dca8ef83181"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca589546f23851a4b6e79dca8ef83181">num_loaded_children_</a></td></tr>
<tr class="memdesc:aca589546f23851a4b6e79dca8ef83181"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of loaded children this node has  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca589546f23851a4b6e79dca8ef83181">更多...</a><br /></td></tr>
<tr class="separator:aca589546f23851a4b6e79dca8ef83181"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5afa8b2a7f8a4f2d21dbcc9cb749c993"><td class="memItemLeft" align="right" valign="top"><a id="a5afa8b2a7f8a4f2d21dbcc9cb749c993"></a>
boost::shared_ptr&lt; ContainerT &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a></td></tr>
<tr class="memdesc:a5afa8b2a7f8a4f2d21dbcc9cb749c993"><td class="mdescLeft">&#160;</td><td class="mdescRight">what holds the points. currently a custom class, but in theory you could use an stl container if you rewrote some of this class. I used to use deques for this... <br /></td></tr>
<tr class="separator:a5afa8b2a7f8a4f2d21dbcc9cb749c993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e7507ebbca5dc73c8230631cefcaed2"><td class="memItemLeft" align="right" valign="top"><a id="a8e7507ebbca5dc73c8230631cefcaed2"></a>
OutofcoreOctreeNodeMetadata::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>node_metadata_</b></td></tr>
<tr class="separator:a8e7507ebbca5dc73c8230631cefcaed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
静态 Protected 属性</h2></td></tr>
<tr class="memitem:ae8d9ecc1f06680f2df5c5f73fe43eeec"><td class="memItemLeft" align="right" valign="top"><a id="ae8d9ecc1f06680f2df5c5f73fe43eeec"></a>
static boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae8d9ecc1f06680f2df5c5f73fe43eeec">rng_mutex_</a></td></tr>
<tr class="memdesc:ae8d9ecc1f06680f2df5c5f73fe43eeec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random number generator mutex <br /></td></tr>
<tr class="separator:ae8d9ecc1f06680f2df5c5f73fe43eeec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1713678ae1def55982cdb8cd74f885"><td class="memItemLeft" align="right" valign="top"><a id="a1f1713678ae1def55982cdb8cd74f885"></a>
static boost::mt19937&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a1f1713678ae1def55982cdb8cd74f885">rand_gen_</a></td></tr>
<tr class="memdesc:a1f1713678ae1def55982cdb8cd74f885"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator <br /></td></tr>
<tr class="separator:a1f1713678ae1def55982cdb8cd74f885"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f98fef3c0c5d198a2341324ef445d72"><td class="memItemLeft" align="right" valign="top"><a id="a1f98fef3c0c5d198a2341324ef445d72"></a>
static const boost::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a1f98fef3c0c5d198a2341324ef445d72">rngseed</a> = 0xAABBCCDD</td></tr>
<tr class="memdesc:a1f98fef3c0c5d198a2341324ef445d72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random number generator seed <br /></td></tr>
<tr class="separator:a1f98fef3c0c5d198a2341324ef445d72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0013fb7503dde308087de3382048b62"><td class="memItemLeft" align="right" valign="top"><a id="ab0013fb7503dde308087de3382048b62"></a>
static const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ab0013fb7503dde308087de3382048b62">pcd_extension</a> = &quot;.pcd&quot;</td></tr>
<tr class="memdesc:ab0013fb7503dde308087de3382048b62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension for this class to find the pcd files on disk <br /></td></tr>
<tr class="separator:ab0013fb7503dde308087de3382048b62"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
<tr class="memitem:af83128559f52b13d006f4694d9198c9b"><td class="memItemLeft" align="right" valign="top"><a id="af83128559f52b13d006f4694d9198c9b"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>OutofcoreOctreeBase&lt; ContainerT, PointT &gt;</b></td></tr>
<tr class="separator:af83128559f52b13d006f4694d9198c9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae826fdd2a9ad1746c38809e08399c7fc"><td class="memItemLeft" align="right" valign="top"><a id="ae826fdd2a9ad1746c38809e08399c7fc"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ae826fdd2a9ad1746c38809e08399c7fc">makenode_norec</a> (const boost::filesystem::path &amp;path, <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *super)</td></tr>
<tr class="memdesc:ae826fdd2a9ad1746c38809e08399c7fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-class function which creates a single child leaf; used with <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a716f6a950a1b7687a5a50296c49625e5">queryBBIntersects_noload</a> to avoid loading the data from disk <br /></td></tr>
<tr class="separator:ae826fdd2a9ad1746c38809e08399c7fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a716f6a950a1b7687a5a50296c49625e5"><td class="memItemLeft" align="right" valign="top"><a id="a716f6a950a1b7687a5a50296c49625e5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a716f6a950a1b7687a5a50296c49625e5">queryBBIntersects_noload</a> (const boost::filesystem::path &amp;rootnode, const Eigen::Vector3d &amp;min, const Eigen::Vector3d &amp;max, const boost::uint32_t query_depth, std::list&lt; std::string &gt; &amp;bin_name)</td></tr>
<tr class="memdesc:a716f6a950a1b7687a5a50296c49625e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-class method which performs a bounding box query without loading any of the point cloud data from disk <br /></td></tr>
<tr class="separator:a716f6a950a1b7687a5a50296c49625e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7888d4fce6b1170f30034c447da2f5fe"><td class="memItemLeft" align="right" valign="top"><a id="a7888d4fce6b1170f30034c447da2f5fe"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a7888d4fce6b1170f30034c447da2f5fe">queryBBIntersects_noload</a> (<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *current, const Eigen::Vector3d &amp;min, const Eigen::Vector3d &amp;max, const boost::uint32_t query_depth, std::list&lt; std::string &gt; &amp;bin_name)</td></tr>
<tr class="memdesc:a7888d4fce6b1170f30034c447da2f5fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-class method overload <br /></td></tr>
<tr class="separator:a7888d4fce6b1170f30034c447da2f5fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename ContainerT = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT = pcl::PointXYZ&gt;<br />
class pcl::outofcore::OutofcoreOctreeBaseNode&lt; ContainerT, PointT &gt;</h3>

<p><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html" title="OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree,...">OutofcoreOctreeBaseNode</a> Class internally representing nodes of an outofcore octree, with accessors to its data via the <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a> class or <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_ram_container.html">pcl::outofcore::OutofcoreOctreeRamContainer</a> class, whichever it is templated against. <br  />
 </p>
<dl class="section note"><dt>注解</dt><dd>Code was adapted from the Urban Robotics out of core octree implementation. Contact Jacob Schloss <a href="#" onclick="location.href='mai'+'lto:'+'jac'+'ob'+'.sc'+'hl'+'oss'+'@u'+'rba'+'nr'+'obo'+'ti'+'cs.'+'ne'+'t'; return false;">jacob<span style="display: none;">.nosp@m.</span>.sch<span style="display: none;">.nosp@m.</span>loss@<span style="display: none;">.nosp@m.</span>urba<span style="display: none;">.nosp@m.</span>nrobo<span style="display: none;">.nosp@m.</span>tics<span style="display: none;">.nosp@m.</span>.net</a> with any questions. <a href="http://www.urbanrobotics.net/">http://www.urbanrobotics.net/</a></dd></dl>
<dl class="section author"><dt>作者</dt><dd>Jacob Schloss (<a href="#" onclick="location.href='mai'+'lto:'+'jac'+'ob'+'.sc'+'hl'+'oss'+'@u'+'rba'+'nr'+'obo'+'ti'+'cs.'+'ne'+'t'; return false;">jacob<span style="display: none;">.nosp@m.</span>.sch<span style="display: none;">.nosp@m.</span>loss@<span style="display: none;">.nosp@m.</span>urba<span style="display: none;">.nosp@m.</span>nrobo<span style="display: none;">.nosp@m.</span>tics<span style="display: none;">.nosp@m.</span>.net</a>) </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a1a8850aac8f22ab31cd81710536d442d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a8850aac8f22ab31cd81710536d442d">&#9670;&nbsp;</a></span>OutofcoreOctreeBaseNode()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a> </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>directory_path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *&#160;</td>
          <td class="paramname"><em>super</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>load_all</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Load from disk If creating root, path is full name. If creating any other node, path is dir; throws exception if directory or metadata not found </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">directory_path</td><td>pathname </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">super</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">load_all</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_p_c_l_exception.html" title="A base class for all pcl exceptions which inherits from std::runtime_error">PCLException</a></td><td>if directory is missing </td></tr>
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_p_c_l_exception.html" title="A base class for all pcl exceptions which inherits from std::runtime_error">PCLException</a></td><td>if node index is missing </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;      : <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a> ()</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a> ()</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a7538e46e8b3d89bfbd03b0e606852ccc">parent_</a> (super)</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> ()</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a> (std::vector &lt;OutofcoreOctreeBaseNode&lt;ContainerT, PointT&gt;*&gt; (8,<span class="keyword">static_cast&lt;</span>OutofcoreOctreeBaseNode&lt;ContainerT, PointT&gt;*<span class="keyword">&gt;</span>(0)))</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> (0)</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca589546f23851a4b6e79dca8ef83181">num_loaded_children_</a> (0)</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a> ()</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      , node_metadata_ ()</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    {</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      node_metadata_ = boost::shared_ptr&lt;OutofcoreOctreeNodeMetadata&gt; (<span class="keyword">new</span> OutofcoreOctreeNodeMetadata ());</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      node_metadata_-&gt;setOutofcoreVersion (3);</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="comment">//Check if this is the first node created/loaded (this is true if super, i.e. node&#39;s parent is NULL)</span></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <span class="keywordflow">if</span> (super == NULL)</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      {</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        node_metadata_-&gt;setDirectoryPathname (directory_path.parent_path ());</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        node_metadata_-&gt;setMetadataFilename (directory_path);</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> = 0;</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a> = <span class="keyword">this</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="comment">//Check if the specified directory to load currently exists; if not, don&#39;t continue</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        <span class="keywordflow">if</span> (!boost::filesystem::exists (node_metadata_-&gt;getDirectoryPathname ()))</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        {</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Could not find dir %s\n&quot;</span>, node_metadata_-&gt;getDirectoryPathname ().c_str ());</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;          PCL_THROW_EXCEPTION (PCLException, <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Outofcore Exception: missing directory&quot;</span>);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        }</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      }</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      {</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        node_metadata_-&gt;setDirectoryPathname (directory_path);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> = super-&gt;getDepth () + 1;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a> = super-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        boost::filesystem::directory_iterator directory_it_end; <span class="comment">//empty constructor creates end of iterator</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="comment">//flag to test if the desired metadata file was found</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordtype">bool</span> b_loaded = 0;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">for</span> (boost::filesystem::directory_iterator directory_it (node_metadata_-&gt;getDirectoryPathname ()); directory_it != directory_it_end; ++directory_it)</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        {</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;          <span class="keyword">const</span> boost::filesystem::path&amp; file = *directory_it;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;          <span class="keywordflow">if</span> (!boost::filesystem::is_directory (file))</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;          {</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;            <span class="keywordflow">if</span> (boost::filesystem::extension (file) == node_index_extension)</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;            {</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;              b_loaded = node_metadata_-&gt;loadMetadataFromDisk (file);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;              <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;            }</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;          }</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        }</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keywordflow">if</span> (!b_loaded)</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        {</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;          PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Could not find index\n&quot;</span>);</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;          PCL_THROW_EXCEPTION (PCLException, <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Outofcore: Could not find node index&quot;</span>);</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        }</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      }</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;      <span class="comment">//load the metadata</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2e2641ff660f418f576fe4962e3e44d1">loadFromFile</a> (node_metadata_-&gt;getMetadataFilename (), super);</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      <span class="comment">//set the number of children in this node</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> = this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a8f567f24e70a2f1f3e4e3760c125a794">countNumChildren</a> ();</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <span class="keywordflow">if</span> (load_all)</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      {</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      }</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a2c485ec11c94788d45436620fefe3402"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">pcl::outofcore::OutofcoreOctreeBaseNode::num_children_</a></div><div class="ttdeci">uint64_t num_children_</div><div class="ttdoc">Number of children on disk. This is only changed when a new node is created</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:545</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a2e2641ff660f418f576fe4962e3e44d1"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2e2641ff660f418f576fe4962e3e44d1">pcl::outofcore::OutofcoreOctreeBaseNode::loadFromFile</a></div><div class="ttdeci">void loadFromFile(const boost::filesystem::path &amp;path, OutofcoreOctreeBaseNode *super)</div><div class="ttdoc">Loads the nodes metadata from the JSON file</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:1956</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a4f620ffb1ce5fdf0e2d0bd93b1617e9a"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">pcl::outofcore::OutofcoreOctreeBaseNode::m_tree_</a></div><div class="ttdeci">OutofcoreOctreeBase&lt; ContainerT, PointT &gt; * m_tree_</div><div class="ttdoc">The tree we belong to</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:534</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a5afa8b2a7f8a4f2d21dbcc9cb749c993"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">pcl::outofcore::OutofcoreOctreeBaseNode::payload_</a></div><div class="ttdeci">boost::shared_ptr&lt; ContainerT &gt; payload_</div><div class="ttdoc">what holds the points. currently a custom class, but in theory you could use an stl container if you ...</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:558</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a7538e46e8b3d89bfbd03b0e606852ccc"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a7538e46e8b3d89bfbd03b0e606852ccc">pcl::outofcore::OutofcoreOctreeBaseNode::parent_</a></div><div class="ttdeci">OutofcoreOctreeBaseNode * parent_</div><div class="ttdoc">super-node</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:538</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a796c6c8e9a51cd42d8ce7b7fefcf3261"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">pcl::outofcore::OutofcoreOctreeBaseNode::root_node_</a></div><div class="ttdeci">OutofcoreOctreeBaseNode * root_node_</div><div class="ttdoc">The root node of the tree we belong to</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:536</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a8f567f24e70a2f1f3e4e3760c125a794"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a8f567f24e70a2f1f3e4e3760c125a794">pcl::outofcore::OutofcoreOctreeBaseNode::countNumChildren</a></div><div class="ttdeci">virtual size_t countNumChildren() const</div><div class="ttdoc">Counts the number of child directories on disk; used to update num_children_</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:268</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a9f2fb7fbd7be380212c99017557be57e"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">pcl::outofcore::OutofcoreOctreeBaseNode::children_</a></div><div class="ttdeci">std::vector&lt; OutofcoreOctreeBaseNode * &gt; children_</div><div class="ttdoc">The children of this node</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:542</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_aca2c713beae1004385b63b196a3b3d01"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">pcl::outofcore::OutofcoreOctreeBaseNode::depth_</a></div><div class="ttdeci">size_t depth_</div><div class="ttdoc">Depth in the tree, root is 0, root's children are 1, ...</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:540</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_aca589546f23851a4b6e79dca8ef83181"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca589546f23851a4b6e79dca8ef83181">pcl::outofcore::OutofcoreOctreeBaseNode::num_loaded_children_</a></div><div class="ttdeci">uint64_t num_loaded_children_</div><div class="ttdoc">Number of loaded children this node has</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:553</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_ad0e74a5ac5e0bcebb80c569290c4c465"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">pcl::outofcore::OutofcoreOctreeBaseNode::loadChildren</a></div><div class="ttdeci">virtual void loadChildren(bool recursive)</div><div class="ttdoc">Load nodes child data creating new nodes for each</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:311</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="aaf52eaaab45e9b3f24aefc1aae220de2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf52eaaab45e9b3f24aefc1aae220de2">&#9670;&nbsp;</a></span>addDataAtMaxDepth() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::addDataAtMaxDepth </td>
          <td>(</td>
          <td class="paramtype">const AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>skip_bb_check</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add data to the leaf when at max depth of tree. If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>vector of points to attempt to add to the tree </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">skip_bb_check</td><td>if <b>true</b>, doesn't check that points are in the proper bounding box; if <b>false</b>, only adds the points that fall into the bounding box to this node </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of points successfully added </dd></dl>
<div class="fragment"><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;    {</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;      assert (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a> != NULL);</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160; </div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;      <span class="comment">// Trust me, just add the points</span></div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;      <span class="keywordflow">if</span> (skip_bb_check)</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;      {</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="comment">// Increment point count for node</span></div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;incrementPointsInLOD (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a>, p.size ());</div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160; </div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;        <span class="comment">// Insert point data</span></div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;insertRange ( p );</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        </div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="keywordflow">return</span> (p.size ());</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;      }</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160; </div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;      <span class="comment">// Add points found within the current node&#39;s bounding box</span></div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;      {</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        AlignedPointTVector buff;</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">size_t</span> len = p.size ();</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; </div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;        {</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pointInBoundingBox</a> (p[i]))</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;          {</div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;            buff.push_back (p[i]);</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;          }</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;        }</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        </div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;        <span class="keywordflow">if</span> (!buff.empty ())</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        {</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;incrementPointsInLOD (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a>, buff.size ());</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;insertRange ( buff );</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;          </div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;        }</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;        <span class="keywordflow">return</span> (buff.size ());</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;      }</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a809db94b3ebf6a4bd150d129b4b1db6d"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pcl::outofcore::OutofcoreOctreeBaseNode::pointInBoundingBox</a></div><div class="ttdeci">bool pointInBoundingBox(const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb, const Eigen::Vector3d &amp;point)</div><div class="ttdoc">Tests whether point falls within the input bounding box</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3c639f9c42a10d1dd0d08d96ae764736"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c639f9c42a10d1dd0d08d96ae764736">&#9670;&nbsp;</a></span>addDataAtMaxDepth() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::addDataAtMaxDepth </td>
          <td>(</td>
          <td class="paramtype">const pcl::PCLPointCloud2::Ptr&#160;</td>
          <td class="paramname"><em>input_cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>skip_bb_check</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add data to the leaf when at max depth of tree. If <code>skip_bb_check</code> is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input_cloud</td><td><a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> points to attempt to add to the tree; </td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>警告</dt><dd><a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> inserted into the tree must have x,y,z fields, and must be of same type of any other points inserted in the tree </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">skip_bb_check</td><td>(default true) if <b>true</b>, doesn't check that points are in the proper bounding box; if <b>false</b>, only adds the points that fall into the bounding box to this node </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of points successfully added </dd></dl>
<div class="fragment"><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    {</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;      <span class="comment">//this assumes data is already in the correct bin</span></div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;      <span class="keywordflow">if</span>(skip_bb_check == <span class="keyword">true</span>)</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;      {</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;        PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Adding %u points at max depth, %u\n&quot;</span>,__FUNCTION__, input_cloud-&gt;width*input_cloud-&gt;height, this-&gt;depth_);</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;        </div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;        this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;incrementPointsInLOD (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a>, input_cloud-&gt;width*input_cloud-&gt;height );</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;insertRange (input_cloud);            </div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; </div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        <span class="keywordflow">return</span> (input_cloud-&gt;width*input_cloud-&gt;height);</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;      }</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;      {</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;        PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Not implemented\n&quot;</span>);</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;        <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;      }</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a70187347c2d0b3ebe1eb5822e6a1589c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70187347c2d0b3ebe1eb5822e6a1589c">&#9670;&nbsp;</a></span>addDataToLeaf()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::addDataToLeaf </td>
          <td>(</td>
          <td class="paramtype">const AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>skip_bb_check</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>add point to this node if we are a leaf, or find the leaf below us that is supposed to take the point </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>vector of points to add to the leaf </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">skip_bb_check</td><td>whether to check if the point's coordinates fall within the bounding box </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    {</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      <span class="comment">//quit if there are no points to add</span></div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      <span class="keywordflow">if</span> (p.empty ())</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      {</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      }</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160; </div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      <span class="comment">//if this depth is the max depth of the tree, then add the points</span></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> == this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;getDepth ())</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">addDataAtMaxDepth</a>( p, skip_bb_check));</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160; </div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;      std::vector &lt; std::vector&lt;const PointT*&gt; &gt; c;</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;      c.resize (8);</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      {</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        c[i].reserve (p.size () / 8);</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;      }</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> len = p.size ();</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;      {</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; pt = p[i];</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <span class="keywordflow">if</span> (!skip_bb_check)</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        {</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;          <span class="keywordflow">if</span> (!this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pointInBoundingBox</a> (pt))</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;          {</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;            PCL_ERROR ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Failed to place point within bounding box\n&quot;</span>, __FUNCTION__ );</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;          }</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        }</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        uint8_t box = 0;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        Eigen::Vector3d mid_xyz = node_metadata_-&gt;getVoxelCenter ();</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        </div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        box = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(((pt.z &gt;= mid_xyz[2]) &lt;&lt; 2) | ((pt.y &gt;= mid_xyz[1]) &lt;&lt; 1) | ((pt.x &gt;= mid_xyz[0]) &lt;&lt; 0));</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        c[<span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(box)].push_back (&amp;pt);</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      }</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;      </div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      boost::uint64_t points_added = 0;</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      {</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        <span class="keywordflow">if</span> (c[i].empty ())</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">createChild</a> (i);</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        points_added += <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;addDataToLeaf (c[i], <span class="keyword">true</span>);</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        c[i].clear ();</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;      }</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      <span class="keywordflow">return</span> (points_added);</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a3270af407876c73e75df3321f5ecb9ed"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">pcl::outofcore::OutofcoreOctreeBaseNode::hasUnloadedChildren</a></div><div class="ttdeci">bool hasUnloadedChildren() const</div><div class="ttdoc">Returns whether or not a node has unloaded children data</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:301</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_aaf52eaaab45e9b3f24aefc1aae220de2"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">pcl::outofcore::OutofcoreOctreeBaseNode::addDataAtMaxDepth</a></div><div class="ttdeci">boost::uint64_t addDataAtMaxDepth(const AlignedPointTVector &amp;p, const bool skip_bb_check=true)</div><div class="ttdoc">Add data to the leaf when at max depth of tree. If skip_bb_check is true, adds to the node regardless...</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:625</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_af309ee9da72334d87619ce4b92cbf75b"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">pcl::outofcore::OutofcoreOctreeBaseNode::createChild</a></div><div class="ttdeci">void createChild(const std::size_t idx)</div><div class="ttdoc">Creates child node idx</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:878</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9e8966b1865d07a00f730beebe6a9ef9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e8966b1865d07a00f730beebe6a9ef9">&#9670;&nbsp;</a></span>addDataToLeaf_and_genLOD()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::addDataToLeaf_and_genLOD </td>
          <td>(</td>
          <td class="paramtype">const AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>skip_bb_check</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively add points to the leaf and children subsampling LODs on the way down. </p>
<dl class="section note"><dt>注解</dt><dd>rng_mutex_ lock occurs </dd></dl>
<div class="fragment"><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    {</div>
<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;      <span class="comment">// If there are no points return</span></div>
<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;      <span class="keywordflow">if</span> (p.empty ())</div>
<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;        <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160; </div>
<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;      <span class="comment">//  when adding data and generating sampled LOD </span></div>
<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;      <span class="comment">// If the max depth has been reached</span></div>
<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;      assert (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a> != NULL );</div>
<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;      </div>
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> == this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;getDepth ())</div>
<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;      {</div>
<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;        PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::addDataToLeaf_and_genLOD] Adding data to the leaves\n&quot;</span>);</div>
<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">addDataAtMaxDepth</a>(p, <span class="keyword">false</span>));</div>
<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;      }</div>
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;      </div>
<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;      <span class="comment">// Create child nodes of the current node but not grand children+</span></div>
<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span> <span class="comment">/*no recursive loading*/</span>);</div>
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160; </div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;      <span class="comment">// Randomly sample data</span></div>
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;      AlignedPointTVector insertBuff;</div>
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e7ca923f6949fdbb3d461dbe9d85f22">randomSample</a>(p, insertBuff, skip_bb_check);</div>
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160; </div>
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;      <span class="keywordflow">if</span>(!insertBuff.empty())</div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;      {</div>
<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;        <span class="comment">// Increment point count for node</span></div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;incrementPointsInLOD (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a>, insertBuff.size());</div>
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;        <span class="comment">// Insert sampled point data</span></div>
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;insertRange (insertBuff);</div>
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;        </div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;      }</div>
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160; </div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;      <span class="comment">//subdivide vec to pass data down lower</span></div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;      std::vector&lt;AlignedPointTVector&gt; c;</div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#abbd17c866ef1f12d6d8b99eb33bbd61f">subdividePoints</a>(p, c, skip_bb_check);</div>
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; </div>
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;      boost::uint64_t points_added = 0;</div>
<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;      <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;      {</div>
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;        <span class="comment">// If child doesn&#39;t have points</span></div>
<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;        <span class="keywordflow">if</span>(c[i].empty())</div>
<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;          <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160; </div>
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        <span class="comment">// If child doesn&#39;t exist</span></div>
<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;        <span class="keywordflow">if</span>(!<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">createChild</a>(i);</div>
<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160; </div>
<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;        <span class="comment">// Recursively build children</span></div>
<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;        points_added += <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;addDataToLeaf_and_genLOD(c[i], <span class="keyword">true</span>);</div>
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;        c[i].clear();</div>
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;      }</div>
<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160; </div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;      <span class="keywordflow">return</span> (points_added);</div>
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a3e7ca923f6949fdbb3d461dbe9d85f22"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e7ca923f6949fdbb3d461dbe9d85f22">pcl::outofcore::OutofcoreOctreeBaseNode::randomSample</a></div><div class="ttdeci">void randomSample(const AlignedPointTVector &amp;p, AlignedPointTVector &amp;insertBuff, const bool skip_bb_check)</div><div class="ttdoc">Randomly sample point data</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:572</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_abbd17c866ef1f12d6d8b99eb33bbd61f"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#abbd17c866ef1f12d6d8b99eb33bbd61f">pcl::outofcore::OutofcoreOctreeBaseNode::subdividePoints</a></div><div class="ttdeci">void subdividePoints(const AlignedPointTVector &amp;p, std::vector&lt; AlignedPointTVector &gt; &amp;c, const bool skip_bb_check)</div><div class="ttdoc">Subdivide points to pass to child nodes</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:688</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a068a8bf6a12ed5eb451d6a1ef17f07c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a068a8bf6a12ed5eb451d6a1ef17f07c2">&#9670;&nbsp;</a></span>addPointCloud()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::addPointCloud </td>
          <td>(</td>
          <td class="paramtype">const pcl::PCLPointCloud2::Ptr &amp;&#160;</td>
          <td class="paramname"><em>input_cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const bool&#160;</td>
          <td class="paramname"><em>skip_bb_check</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add a single <a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> object into the octree. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input_cloud</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">skip_bb_check</td><td>(default = false) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    {</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;      assert (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a> != NULL);</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;      </div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;      <span class="keywordflow">if</span> (input_cloud-&gt;height*input_cloud-&gt;width == 0)</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;      </div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> == this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a>-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a>-&gt;getDepth ())</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aaf52eaaab45e9b3f24aefc1aae220de2">addDataAtMaxDepth</a> (input_cloud, <span class="keyword">true</span>));</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;      </div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;      <span class="keywordflow">if</span>( <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &lt; 8 )</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        <span class="keywordflow">if</span>(<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160; </div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;      <span class="keywordflow">if</span>( skip_bb_check == <span class="keyword">false</span> )</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;      {</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; </div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        <span class="comment">//indices to store the points for each bin</span></div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="comment">//these lists will be used to copy data to new point clouds and pass down recursively</span></div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        std::vector &lt; std::vector&lt;int&gt; &gt; indices;</div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        indices.resize (8);</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        </div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e584fa9e47e5d1bb7c1ec83752db20e">sortOctantIndices</a> (input_cloud, indices, node_metadata_-&gt;getVoxelCenter ());</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; </div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> k=0; k&lt;indices.size (); k++)</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        {</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;          PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Computed %d indices in octact %d\n&quot;</span>, __FUNCTION__, indices[k].<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a592ba5034ef1efc36a9ebaeb7d06d92a">size</a> (), k);</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        }</div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160; </div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;        boost::uint64_t points_added = 0;</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; </div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0; i&lt;8; i++)</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        {</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;          <span class="keywordflow">if</span> ( indices[i].empty () )</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160; </div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i] == 0)</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;          {</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#af309ee9da72334d87619ce4b92cbf75b">createChild</a> (i);</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;          }</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160; </div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;          pcl::PCLPointCloud2::Ptr dst_cloud (<span class="keyword">new</span> <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> () );</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160; </div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;              PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Extracting indices to bins\n&quot;</span>, __FUNCTION__);</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;              </div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;          <span class="comment">//copy the points from extracted indices from input cloud to destination cloud</span></div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;          <a class="code" href="group__common.html#gaa65b1c8d782e7b776ae682679d2d948f">pcl::copyPointCloud</a> ( *input_cloud, indices[i], *dst_cloud ) ;</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;          </div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;          <span class="comment">//recursively add the new cloud to the data</span></div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;          points_added += <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;addPointCloud (dst_cloud, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;          indices[i].clear ();</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        }</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;        </div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        <span class="keywordflow">return</span> (points_added);</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;      }</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;      </div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;      PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Skipped bounding box check. Points not inserted\n&quot;</span>);</div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;      </div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;      <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a3e584fa9e47e5d1bb7c1ec83752db20e"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3e584fa9e47e5d1bb7c1ec83752db20e">pcl::outofcore::OutofcoreOctreeBaseNode::sortOctantIndices</a></div><div class="ttdeci">void sortOctantIndices(const pcl::PCLPointCloud2::Ptr &amp;input_cloud, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;indices, const Eigen::Vector3d &amp;mid_xyz)</div><div class="ttdoc">Sorts the indices based on x,y,z fields and pushes the index into the proper octant's vector; This co...</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:2007</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a592ba5034ef1efc36a9ebaeb7d06d92a"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a592ba5034ef1efc36a9ebaeb7d06d92a">pcl::outofcore::OutofcoreOctreeBaseNode::size</a></div><div class="ttdeci">boost::uint64_t size() const</div><div class="ttdoc">Number of points in the payload</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:467</div></div>
<div class="ttc" id="agroup__common_html_gaa65b1c8d782e7b776ae682679d2d948f"><div class="ttname"><a href="group__common.html#gaa65b1c8d782e7b776ae682679d2d948f">pcl::copyPointCloud</a></div><div class="ttdeci">PCL_EXPORTS void copyPointCloud(const pcl::PCLPointCloud2 &amp;cloud_in, const std::vector&lt; int &gt; &amp;indices, pcl::PCLPointCloud2 &amp;cloud_out)</div><div class="ttdoc">Extract the indices of a given point cloud as a new point cloud</div></div>
<div class="ttc" id="astructpcl_1_1_p_c_l_point_cloud2_html"><div class="ttname"><a href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a></div><div class="ttdef"><b>Definition:</b> PCLPointCloud2.h:21</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a740054acdc4f823942dc51f34c79e579"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a740054acdc4f823942dc51f34c79e579">&#9670;&nbsp;</a></span>convertToXYZRecursive()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::convertToXYZRecursive</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively converts data files to ascii XZY files </p>
<dl class="section note"><dt>注解</dt><dd>This will be deprecated soon </dd></dl>
<div class="fragment"><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;    {</div>
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;      std::string fname = boost::filesystem::basename (node_metadata_-&gt;getPCDFilename ()) + std::string (<span class="stringliteral">&quot;.dat.xyz&quot;</span>);</div>
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;      boost::filesystem::path xyzfile = node_metadata_-&gt;getDirectoryPathname () / fname;</div>
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;convertToXYZ (xyzfile);</div>
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; </div>
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;      {</div>
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;      }</div>
<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; </div>
<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;      {</div>
<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;convertToXYZ ();</div>
<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;      }</div>
<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="af309ee9da72334d87619ce4b92cbf75b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af309ee9da72334d87619ce4b92cbf75b">&#9670;&nbsp;</a></span>createChild()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::createChild </td>
          <td>(</td>
          <td class="paramtype">const std::size_t&#160;</td>
          <td class="paramname"><em>idx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates child node <code>idx</code> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>Index (0-7) of the child node </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    {</div>
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;      assert (idx &lt; 8);</div>
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;      </div>
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;      <span class="comment">//if already has 8 children, return</span></div>
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[idx] || (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> == 8))</div>
<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;      {</div>
<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::createChild] Not allowed to create a 9th child of %s&quot;</span>,this-&gt;node_metadata_-&gt;getMetadataFilename ().c_str ());</div>
<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;      }</div>
<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160; </div>
<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;      Eigen::Vector3d start = node_metadata_-&gt;getBoundingBoxMin ();</div>
<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;      Eigen::Vector3d step = (node_metadata_-&gt;getBoundingBoxMax () - start)/<span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(2.0);</div>
<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160; </div>
<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;      Eigen::Vector3d childbb_min;</div>
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;      Eigen::Vector3d childbb_max;</div>
<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160; </div>
<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;      <span class="keywordtype">int</span> x, y, z;</div>
<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;      <span class="keywordflow">if</span> (idx &gt; 3)</div>
<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;      {</div>
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;        x = ((idx == 5) || (idx == 7)) ? 1 : 0;</div>
<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;        y = ((idx == 6) || (idx == 7)) ? 1 : 0;</div>
<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;        z = 1;</div>
<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;      }</div>
<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;      {</div>
<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        x = ((idx == 1) || (idx == 3)) ? 1 : 0;</div>
<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        y = ((idx == 2) || (idx == 3)) ? 1 : 0;</div>
<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        z = 0;</div>
<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;      }</div>
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160; </div>
<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;      childbb_min[2] = start[2] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (z) * step[2];</div>
<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;      childbb_max[2] = start[2] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (z + 1) * step[2];</div>
<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160; </div>
<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;      childbb_min[1] = start[1] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (y) * step[1];</div>
<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;      childbb_max[1] = start[1] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (y + 1) * step[1];</div>
<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160; </div>
<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;      childbb_min[0] = start[0] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (x) * step[0];</div>
<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;      childbb_max[0] = start[0] + <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (x + 1) * step[0];</div>
<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160; </div>
<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;      boost::filesystem::path childdir = node_metadata_-&gt;getDirectoryPathname () / boost::filesystem::path (boost::lexical_cast&lt;std::string&gt; (idx));</div>
<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[idx] = <span class="keyword">new</span> OutofcoreOctreeBaseNode&lt;ContainerT, PointT&gt; (childbb_min, childbb_max, childdir.string ().c_str (), <span class="keyword">this</span>);</div>
<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160; </div>
<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a>++;</div>
<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a02626db7622e8b8734750987ec66f973"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02626db7622e8b8734750987ec66f973">&#9670;&nbsp;</a></span>getBoundingBox()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getBoundingBox </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>gets the minimum and maximum corner of the bounding box represented by this node </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">min_bb</td><td>returns the minimum corner of the bounding box indexed by 0--&gt;X, 1--&gt;Y, 2--&gt;Z </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">max_bb</td><td>returns the maximum corner of the bounding box indexed by 0--&gt;X, 1--&gt;Y, 2--&gt;Z </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        {</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;          node_metadata_-&gt;getBoundingBox (min_bb, max_bb);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a0f8d78b9eff5c1bda626056bc296fd22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f8d78b9eff5c1bda626056bc296fd22">&#9670;&nbsp;</a></span>getOccupiedVoxelCentersRecursive() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getOccupiedVoxelCentersRecursive </td>
          <td>(</td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>voxel_centers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>query_depth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets a vector of occupied voxel centers </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">voxel_centers</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;    {</div>
<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth){</div>
<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &gt; 0)</div>
<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;        {</div>
<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;          {</div>
<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;              <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;getOccupiedVoxelCentersRecursive (voxel_centers, query_depth);</div>
<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;          }</div>
<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;        }</div>
<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;      }</div>
<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;      {</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;        <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> voxel_center;</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;        Eigen::Vector3d mid_xyz = node_metadata_-&gt;getVoxelCenter ();</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        voxel_center.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mid_xyz[0]);</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;        voxel_center.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mid_xyz[1]);</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;        voxel_center.z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(mid_xyz[2]);</div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; </div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        voxel_centers.push_back(voxel_center);</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;      }</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae035b0551fbfcccf1b6ef0b69f197ac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae035b0551fbfcccf1b6ef0b69f197ac4">&#9670;&nbsp;</a></span>getOccupiedVoxelCentersRecursive() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getOccupiedVoxelCentersRecursive </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>voxel_centers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>query_depth</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets a vector of occupied voxel centers </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">voxel_centers</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;    {</div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth){</div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &gt; 0)</div>
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        {</div>
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;          {</div>
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;              <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;getOccupiedVoxelCentersRecursive (voxel_centers, query_depth);</div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;          }</div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;        }</div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;      }</div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;      {</div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;        Eigen::Vector3d voxel_center = node_metadata_-&gt;getVoxelCenter ();</div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;        voxel_centers.push_back(voxel_center);</div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;      }</div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad88e68bf251e5f640a4517e00ae42a69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad88e68bf251e5f640a4517e00ae42a69">&#9670;&nbsp;</a></span>inBoundingBox()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::inBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tests whether the input bounding box falls inclusively within this node's bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>The minimum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>The maximum corner of the input bounding box </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>bool True if the input bounding box falls inclusively within the boundaries of this node's bounding box </dd></dl>
<div class="fragment"><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;    {</div>
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;      Eigen::Vector3d min, max;</div>
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; </div>
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;      node_metadata_-&gt;getBoundingBox (min, max);</div>
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; </div>
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;      <span class="keywordflow">if</span> ((min_bb[0] &lt;= min[0]) &amp;&amp; (max[0] &lt;= max_bb[0]))</div>
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;      {</div>
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;        <span class="keywordflow">if</span> ((min_bb[1] &lt;= min[1]) &amp;&amp; (max[1] &lt;= max_bb[1]))</div>
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;        {</div>
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;          <span class="keywordflow">if</span> ((min_bb[2] &lt;= min[2]) &amp;&amp; (max[2] &lt;= max_bb[2]))</div>
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;          {</div>
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;            <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;          }</div>
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;        }</div>
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;      }</div>
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; </div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;      <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a756b7646bdd922567d02dcd26d5a4c36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a756b7646bdd922567d02dcd26d5a4c36">&#9670;&nbsp;</a></span>init_root_node()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::init_root_node </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>bb_min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>bb_max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base.html">OutofcoreOctreeBase</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; *const&#160;</td>
          <td class="paramname"><em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>rootname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create root node and directory </p>
<p>Initializes the root node and performs initial filesystem checks for the octree; throws OctreeException::OCT_BAD_PATH if root directory is an existing file</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">bb_min</td><td>triple of x,y,z minima for bounding box </td></tr>
    <tr><td class="paramname">bb_max</td><td>triple of x,y,z maxima for bounding box </td></tr>
    <tr><td class="paramname">tree</td><td>adress of the tree data structure that will hold this initial root node </td></tr>
    <tr><td class="paramname">rootname</td><td>Root directory for location of on-disk octree storage; if directory doesn't exist, it is created; if "rootname" is an existing file,</td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_p_c_l_exception.html" title="A base class for all pcl exceptions which inherits from std::runtime_error">PCLException</a></td><td>if the specified path already exists </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    {</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;      assert (tree != NULL);</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a7538e46e8b3d89bfbd03b0e606852ccc">parent_</a> = NULL;</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a796c6c8e9a51cd42d8ce7b7fefcf3261">root_node_</a> = <span class="keyword">this</span>;</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a4f620ffb1ce5fdf0e2d0bd93b1617e9a">m_tree_</a> = tree;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> = 0;</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      <span class="comment">//Mark the children as unallocated</span></div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> = 0;</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      Eigen::Vector3d tmp_max = bb_max;</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;      Eigen::Vector3d tmp_min = bb_min;</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="comment">// Need to make the bounding box slightly bigger so points that fall on the max side aren&#39;t excluded</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      <span class="keywordtype">double</span> epsilon = 1e-8;</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      tmp_max = tmp_max + epsilon*Eigen::Vector3d (1.0, 1.0, 1.0);</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      node_metadata_-&gt;setBoundingBox (tmp_min, tmp_max);</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      node_metadata_-&gt;setDirectoryPathname (root_name.parent_path ());</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      node_metadata_-&gt;setOutofcoreVersion (3);</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      <span class="comment">// If the root directory doesn&#39;t exist create it</span></div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <span class="keywordflow">if</span> (!boost::filesystem::exists (node_metadata_-&gt;getDirectoryPathname ()))</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      {</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        boost::filesystem::create_directory (node_metadata_-&gt;getDirectoryPathname ());</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      }</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      <span class="comment">// If the root directory is a file, do not continue</span></div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!boost::filesystem::is_directory (node_metadata_-&gt;getDirectoryPathname ()))</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      {</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Need empty directory structure. Dir %s exists and is a file.\n&quot;</span>,node_metadata_-&gt;getDirectoryPathname ().c_str ());</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        PCL_THROW_EXCEPTION (PCLException, <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Bad Path: Directory Already Exists&quot;</span>);</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      }</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      <span class="comment">// Create a unique id for node file name</span></div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      std::string uuid;</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      </div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">OutofcoreOctreeDiskContainer&lt;PointT&gt;::getRandomUUIDString</a> (uuid);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      std::string node_container_name;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      node_container_name = uuid + std::string (<span class="stringliteral">&quot;_&quot;</span>) + node_container_basename + <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ab0013fb7503dde308087de3382048b62">pcd_extension</a>;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160; </div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      node_metadata_-&gt;setMetadataFilename (node_metadata_-&gt;getDirectoryPathname () / root_name.filename ());</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      node_metadata_-&gt;setPCDFilename (node_metadata_-&gt;getDirectoryPathname () / boost::filesystem::path (node_container_name));</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      boost::filesystem::create_directory (node_metadata_-&gt;getDirectoryPathname ());</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      node_metadata_-&gt;serializeMetadataToDisk ();</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="comment">// Create data container, ie octree_disk_container, octree_ram_container</span></div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a> = boost::shared_ptr&lt;ContainerT&gt; (<span class="keyword">new</span> ContainerT (node_metadata_-&gt;getPCDFilename ()));</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_ab0013fb7503dde308087de3382048b62"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ab0013fb7503dde308087de3382048b62">pcl::outofcore::OutofcoreOctreeBaseNode::pcd_extension</a></div><div class="ttdeci">static const std::string pcd_extension</div><div class="ttdoc">Extension for this class to find the pcd files on disk</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:570</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_a46694ebbc0a66c66077e912130f9b04a"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">pcl::outofcore::OutofcoreOctreeDiskContainer::getRandomUUIDString</a></div><div class="ttdeci">static void getRandomUUIDString(std::string &amp;s)</div><div class="ttdoc">Generate a universally unique identifier (UUID)</div><div class="ttdef"><b>Definition:</b> octree_disk_container.hpp:85</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0dfc9e4699b5197e2a23d71d1d96bb18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0dfc9e4699b5197e2a23d71d1d96bb18">&#9670;&nbsp;</a></span>intersectsWithBoundingBox()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::intersectsWithBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tests whether the input bounding box intersects with the current node's bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>The minimum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>The maximum corner of the input bounding box </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>bool True if any portion of the bounding box intersects with this node's bounding box; false otherwise </dd></dl>
<div class="fragment"><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;    {</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;      Eigen::Vector3d min, max;</div>
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;      node_metadata_-&gt;getBoundingBox (min, max);</div>
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;      </div>
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;      <span class="comment">//Check whether any portion of min_bb, max_bb falls within min,max</span></div>
<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;      <span class="keywordflow">if</span> (((min[0] &lt;= min_bb[0]) &amp;&amp; (min_bb[0] &lt;= max[0])) || ((min_bb[0] &lt;= min[0]) &amp;&amp; (min[0] &lt;= max_bb[0])))</div>
<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;      {</div>
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;        <span class="keywordflow">if</span> (((min[1] &lt;= min_bb[1]) &amp;&amp; (min_bb[1] &lt;= max[1])) || ((min_bb[1] &lt;= min[1]) &amp;&amp; (min[1] &lt;= max_bb[1])))</div>
<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;        {</div>
<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;          <span class="keywordflow">if</span> (((min[2] &lt;= min_bb[2]) &amp;&amp; (min_bb[2] &lt;= max[2])) || ((min_bb[2] &lt;= min[2]) &amp;&amp; (min[2] &lt;= max_bb[2])))</div>
<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;          {</div>
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;            <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;          }</div>
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;        }</div>
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;      }</div>
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; </div>
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;      <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a72b5b9bc1e646f724e43a3c668615f58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72b5b9bc1e646f724e43a3c668615f58">&#9670;&nbsp;</a></span>pointInBoundingBox() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::pointInBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tests whether <code>x</code>, <code>y</code>, and <code>z</code> fall within the input bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>The minimum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>The maximum corner of the input bounding box </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">x</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">y</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">z</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a809db94b3ebf6a4bd150d129b4b1db6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a809db94b3ebf6a4bd150d129b4b1db6d">&#9670;&nbsp;</a></span>pointInBoundingBox() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::pointInBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>point</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tests whether <code>point</code> falls within the input bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>The minimum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>The maximum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>The test point </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2a1bf7e6015d83e1c416cf28c03ccb00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a1bf7e6015d83e1c416cf28c03ccb00">&#9670;&nbsp;</a></span>pointInBoundingBox() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::pointInBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>p</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tests whether <code>p</code> falls within the input bounding box </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>The minimum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>The maximum corner of the input bounding box </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>The point to be tested </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;    {</div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;      <span class="comment">//by convention, minimum boundary is included; maximum boundary is not</span></div>
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;      <span class="keywordflow">if</span> ((min_bb[0] &lt;= p.x) &amp;&amp; (p.x &lt; max_bb[0]))</div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;      {</div>
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;        <span class="keywordflow">if</span> ((min_bb[1] &lt;= p.y) &amp;&amp; (p.y &lt; max_bb[1]))</div>
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;        {</div>
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;          <span class="keywordflow">if</span> ((min_bb[2] &lt;= p.z) &amp;&amp; (p.z &lt; max_bb[2]))</div>
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;          {</div>
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;            <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;          }</div>
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;        }</div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;      }</div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;      <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae8da02065b6d179e57e22f49a8d47aef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8da02065b6d179e57e22f49a8d47aef">&#9670;&nbsp;</a></span>printBoundingBox()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::printBoundingBox </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>query_depth</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write the voxel size to stdout at <code>query_depth</code> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td>The depth at which to print the size of the voxel/bounding boxes </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    {</div>
<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;      Eigen::Vector3d min;</div>
<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;      Eigen::Vector3d max;</div>
<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;      node_metadata_-&gt;getBoundingBox (min, max);</div>
<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160; </div>
<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;      <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth){</div>
<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a>; i++)</div>
<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;          std::cout &lt;&lt; <span class="stringliteral">&quot;  &quot;</span>;</div>
<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160; </div>
<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; min[0] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; min[1] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; min[2] &lt;&lt; <span class="stringliteral">&quot;] - &quot;</span>;</div>
<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; max[0] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; max[1] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; max[2] &lt;&lt; <span class="stringliteral">&quot;] - &quot;</span>;</div>
<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;        std::cout &lt;&lt;  <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; max[0] - min[0] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; max[1] - min[1];</div>
<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; max[2] - min[2] &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160; </div>
<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &gt; 0)</div>
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;        {</div>
<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;          {</div>
<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;              <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;printBoundingBox (query_depth);</div>
<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;          }</div>
<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;        }</div>
<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;      }</div>
<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="acdacc92401e3bfc72b659894bfafb68f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdacc92401e3bfc72b659894bfafb68f">&#9670;&nbsp;</a></span>queryBBIncludes() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::queryBBIncludes </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>query_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>dst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively add points that fall into the queried bounding box up to the <b>query_depth</b> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>the minimum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>the maximum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td>the maximum depth to query in the octree for points within the bounding box </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>destion of points returned by the queries </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;    {</div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; </div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;      <span class="comment">//if the queried bounding box has any intersection with this node&#39;s bounding box</span></div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">intersectsWithBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;      {</div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;        <span class="comment">//if we aren&#39;t at the max desired depth</span></div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;        <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth)</div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;        {</div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;          <span class="comment">//if this node doesn&#39;t have any children, we are at the max depth for this query</span></div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;          <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;          {</div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;            this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;          }</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; </div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;          <span class="comment">//if this node has children</span></div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aabcdf2cecab2918ca63126167752fff4">getNumChildren</a> () &gt; 0)</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;          {</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;            <span class="keywordflow">if</span>(<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ())</div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;              <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; </div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;            <span class="comment">//recursively store any points that fall into the queried bounding box into v and return</span></div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;            {</div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;                <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;queryBBIncludes (min_bb, max_bb, query_depth, v);</div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;            }</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;          }</div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;        }</div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;        <span class="comment">//otherwise if we are at the max depth</span></div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;        {</div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;          <span class="comment">//if this node&#39;s bounding box falls completely within the queried bounding box</span></div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">inBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;          {</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;            <span class="comment">//get all the points from the payload and return</span></div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;            AlignedPointTVector payload_cache;</div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;readRange (0, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (), payload_cache);</div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;            v.insert (v.end (), payload_cache.begin (), payload_cache.end ());</div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;          }</div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;          <span class="comment">//otherwise queried bounding box only partially intersects this</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;          <span class="comment">//node&#39;s bounding box, so we have to check all the points in</span></div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;          <span class="comment">//this box for intersection with queried bounding box</span></div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;          {</div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;            <span class="comment">//read _all_ the points in from the disk container</span></div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;            AlignedPointTVector payload_cache;</div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;readRange (0, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (), payload_cache);</div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;        </div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;            uint64_t len = <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size ();</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;            <span class="comment">//iterate through each of them</span></div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;            <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; len; i++)</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;            {</div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;              <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; p = payload_cache[i];</div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;              <span class="comment">//if it falls within this bounding box</span></div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pointInBoundingBox</a> (min_bb, max_bb, p))</div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;              {</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;                <span class="comment">//store it in the list</span></div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;                v.push_back (p);</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;              }</div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;              {</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;                PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::queryBBIncludes] Point %.2lf %.2lf %.2lf not in bounding box %.2lf %.2lf %.2lf&quot;</span>, p.x, p.y, p.z, min_bb[0], min_bb[1], min_bb[2], max_bb[0], max_bb[1], max_bb[2]);</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;              }</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;            }</div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;          }</div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;        }</div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;      }</div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_a0dfc9e4699b5197e2a23d71d1d96bb18"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">pcl::outofcore::OutofcoreOctreeBaseNode::intersectsWithBoundingBox</a></div><div class="ttdeci">bool intersectsWithBoundingBox(const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb) const</div><div class="ttdoc">Tests whether the input bounding box intersects with the current node's bounding box</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:1831</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_aabcdf2cecab2918ca63126167752fff4"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aabcdf2cecab2918ca63126167752fff4">pcl::outofcore::OutofcoreOctreeBaseNode::getNumChildren</a></div><div class="ttdeci">virtual size_t getNumChildren() const</div><div class="ttdoc">Returns the total number of children on disk</div><div class="ttdef"><b>Definition:</b> octree_base_node.h:279</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_base_node_html_ad88e68bf251e5f640a4517e00ae42a69"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">pcl::outofcore::OutofcoreOctreeBaseNode::inBoundingBox</a></div><div class="ttdeci">bool inBoundingBox(const Eigen::Vector3d &amp;min_bb, const Eigen::Vector3d &amp;max_bb) const</div><div class="ttdoc">Tests whether the input bounding box falls inclusively within this node's bounding box</div><div class="ttdef"><b>Definition:</b> octree_base_node.hpp:1853</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad86d616b7a5ff8123c28a7a0d19e96cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad86d616b7a5ff8123c28a7a0d19e96cf">&#9670;&nbsp;</a></span>queryBBIncludes() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::queryBBIncludes </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>query_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const pcl::PCLPointCloud2::Ptr &amp;&#160;</td>
          <td class="paramname"><em>dst_blob</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively add points that fall into the queried bounding box up to the <b>query_depth</b> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>the minimum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>the maximum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td>the maximum depth to query in the octree for points within the bounding box </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst_blob</td><td>destion of points returned by the queries </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;    {</div>
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;      uint64_t startingSize = dst_blob-&gt;width*dst_blob-&gt;height;</div>
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Starting points in destination blob: %ul\n&quot;</span>, __FUNCTION__, startingSize );</div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; </div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;      <span class="comment">// If the queried bounding box has any intersection with this node&#39;s bounding box</span></div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">intersectsWithBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;      {</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;        <span class="comment">// If we aren&#39;t at the max desired depth</span></div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;        <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth)</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;        {</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;          <span class="comment">//if this node doesn&#39;t have any children, we are at the max depth for this query</span></div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;          <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> == 0) &amp;&amp; (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ()))</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; </div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;          <span class="comment">//if this node has children</span></div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &gt; 0)</div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;          {</div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;            <span class="comment">//recursively store any points that fall into the queried bounding box into v and return</span></div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;            {</div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;                <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;queryBBIncludes (min_bb, max_bb, query_depth, dst_blob);</div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;            }</div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;            PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Points in dst_blob: %ul\n&quot;</span>, __FUNCTION__, dst_blob-&gt;width*dst_blob-&gt;height );</div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;          }</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        }</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        <span class="keywordflow">else</span> <span class="comment">//otherwise if we are at the max depth</span></div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;        {</div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;          <span class="comment">//get all the points from the payload and return (easy with PCLPointCloud2)</span></div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;          pcl::PCLPointCloud2::Ptr tmp_blob (<span class="keyword">new</span> <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> ());</div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;          pcl::PCLPointCloud2::Ptr tmp_dst_blob (<span class="keyword">new</span> <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> ());</div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;          <span class="comment">//load all the data in this node from disk</span></div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;readRange (0, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (), tmp_blob);</div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; </div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;          <span class="keywordflow">if</span>( tmp_blob-&gt;width*tmp_blob-&gt;height == 0 )</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;          <span class="comment">//if this node&#39;s bounding box falls completely within the queried bounding box, keep all the points</span></div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">inBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;          {</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;            <span class="comment">//concatenate all of what was just read into the main dst_blob</span></div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;            <span class="comment">//(is it safe to do in place?)</span></div>
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;            </div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;            <span class="comment">//if there is already something in the destination blob (remember this method is recursive)</span></div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;            <span class="keywordflow">if</span>( dst_blob-&gt;width*dst_blob-&gt;height != 0 )</div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;            {</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;              PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofocre::OutofcoreOctreeBaseNode::%s] Size of cloud before: %lu\n&quot;</span>, __FUNCTION__, dst_blob-&gt;width*dst_blob-&gt;height );</div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;              PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Concatenating point cloud\n&quot;</span>, __FUNCTION__);</div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;              <span class="keywordtype">int</span> res = <a class="code" href="group__common.html#gaaebfbeb8e50f90057188131228b2e8b6">pcl::concatenatePointCloud</a> (*dst_blob, *tmp_blob, *dst_blob);</div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;              (void)res;</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;              assert (res == 1);</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; </div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;              PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofocre::OutofcoreOctreeBaseNode::%s] Size of cloud after: %lu\n&quot;</span>, __FUNCTION__, dst_blob-&gt;width*dst_blob-&gt;height );</div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;            }</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;            <span class="comment">//otherwise, just copy the tmp_blob into the dst_blob</span></div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;            <span class="keywordflow">else</span> </div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;            {</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;              PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode] Copying point cloud into the destination blob\n&quot;</span>);</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;              <a class="code" href="group__common.html#gaa65b1c8d782e7b776ae682679d2d948f">pcl::copyPointCloud</a> (*tmp_blob, *dst_blob);</div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;              assert (tmp_blob-&gt;width*tmp_blob-&gt;height == dst_blob-&gt;width*dst_blob-&gt;height);</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;            }</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;            PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Points in dst_blob: %ul\n&quot;</span>, __FUNCTION__, dst_blob-&gt;width*dst_blob-&gt;height );</div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;          }</div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;          {</div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;          <span class="comment">//otherwise queried bounding box only partially intersects this</span></div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;          <span class="comment">//node&#39;s bounding box, so we have to check all the points in</span></div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;          <span class="comment">//this box for intersection with queried bounding box</span></div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; </div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;            </div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">//            PCL_DEBUG (&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Partial extraction of points in bounding box. Desired: %.2lf %.2lf %2lf, %.2lf %.2lf %.2lf; This node BB: %.2lf %.2lf %.2lf, %.2lf %.2lf %.2lf\n&quot;, __FUNCTION__, min_bb[0], min_bb[1], min_bb[2], max_bb[0], max_bb[1], max_bb[2], min_[0], min_[1], min_[2], max_[0], max_[1], max_[2] );</span></div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;            </div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;            <span class="comment">//put the ros message into a pointxyz point cloud (just to get the indices by using getPointsInBox)</span></div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;            <span class="keyword">typename</span> pcl::PointCloud&lt;PointT&gt;::Ptr tmp_cloud ( <span class="keyword">new</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;PointT&gt;</a> () );</div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;            pcl::fromPCLPointCloud2 ( *tmp_blob, *tmp_cloud );</div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;            assert (tmp_blob-&gt;width*tmp_blob-&gt;height == tmp_cloud-&gt;width*tmp_cloud-&gt;height );</div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; </div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;            Eigen::Vector4f min_pt ( <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ( min_bb[0] ), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ( min_bb[1] ), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ( min_bb[2] ), 1.0f);</div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;            Eigen::Vector4f max_pt ( <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ( max_bb[0] ), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ( max_bb[1] ) , <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>( max_bb[2] ), 1.0f );</div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;                </div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;            std::vector&lt;int&gt; indices;</div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; </div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;            <a class="code" href="group__common.html#gab831a44b375fa7e6bada740d1d17e247">pcl::getPointsInBox</a> ( *tmp_cloud, min_pt, max_pt, indices );</div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;            PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Points in box: %d\n&quot;</span>, __FUNCTION__, indices.size () );</div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;            PCL_DEBUG ( <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Points remaining: %d\n&quot;</span>, __FUNCTION__, tmp_cloud-&gt;width*tmp_cloud-&gt;height - indices.size () );</div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; </div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;            <span class="keywordflow">if</span> ( indices.size () &gt; 0 )</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;            {</div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;              <span class="keywordflow">if</span>( dst_blob-&gt;width*dst_blob-&gt;height &gt; 0 )</div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;              {</div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;                <span class="comment">//need a new tmp destination with extracted points within BB</span></div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;                pcl::PCLPointCloud2::Ptr tmp_blob_within_bb (<span class="keyword">new</span> <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> ());</div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;                </div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;                <span class="comment">//copy just the points marked in indices</span></div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;                <a class="code" href="group__common.html#gaa65b1c8d782e7b776ae682679d2d948f">pcl::copyPointCloud</a> ( *tmp_blob, indices, *tmp_blob_within_bb );</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;                assert ( tmp_blob_within_bb-&gt;width*tmp_blob_within_bb-&gt;height == indices.size () );</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;                assert ( tmp_blob-&gt;fields.size () == tmp_blob_within_bb-&gt;fields.size () );</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;                <span class="comment">//concatenate those points into the returned dst_blob</span></div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;                PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Concatenating point cloud in place\n&quot;</span>, __FUNCTION__);</div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;                boost::uint64_t orig_points_in_destination = dst_blob-&gt;width*dst_blob-&gt;height;</div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;                (void)orig_points_in_destination;</div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;                <span class="keywordtype">int</span> res = <a class="code" href="group__common.html#gaaebfbeb8e50f90057188131228b2e8b6">pcl::concatenatePointCloud</a> (*dst_blob, *tmp_blob_within_bb, *dst_blob);</div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;                (void)res;</div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;                assert (res == 1);</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;                assert (dst_blob-&gt;width*dst_blob-&gt;height == indices.size () + orig_points_in_destination);</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;              }</div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;              <span class="keywordflow">else</span></div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;              {</div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;                <a class="code" href="group__common.html#gaa65b1c8d782e7b776ae682679d2d948f">pcl::copyPointCloud</a> ( *tmp_blob, indices, *dst_blob );</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;                assert ( dst_blob-&gt;width*dst_blob-&gt;height == indices.size () );</div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;              }</div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;            }</div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;          }</div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;        }</div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;      }</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; </div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;      PCL_DEBUG (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeBaseNode::%s] Points added by function call: %ul\n&quot;</span>, __FUNCTION__, dst_blob-&gt;width*dst_blob-&gt;height - startingSize );</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a></div><div class="ttdoc">PointCloud represents the base class in PCL for storing collections of 3D points.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:173</div></div>
<div class="ttc" id="agroup__common_html_gaaebfbeb8e50f90057188131228b2e8b6"><div class="ttname"><a href="group__common.html#gaaebfbeb8e50f90057188131228b2e8b6">pcl::concatenatePointCloud</a></div><div class="ttdeci">PCL_EXPORTS bool concatenatePointCloud(const pcl::PCLPointCloud2 &amp;cloud1, const pcl::PCLPointCloud2 &amp;cloud2, pcl::PCLPointCloud2 &amp;cloud_out)</div><div class="ttdoc">Concatenate two pcl::PCLPointCloud2.</div></div>
<div class="ttc" id="agroup__common_html_gab831a44b375fa7e6bada740d1d17e247"><div class="ttname"><a href="group__common.html#gab831a44b375fa7e6bada740d1d17e247">pcl::getPointsInBox</a></div><div class="ttdeci">void getPointsInBox(const pcl::PointCloud&lt; PointT &gt; &amp;cloud, Eigen::Vector4f &amp;min_pt, Eigen::Vector4f &amp;max_pt, std::vector&lt; int &gt; &amp;indices)</div><div class="ttdoc">Get a set of points residing in a box given its bounds</div><div class="ttdef"><b>Definition:</b> common.hpp:87</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab6f84897e582d599020c1947eafe5500"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6f84897e582d599020c1947eafe5500">&#9670;&nbsp;</a></span>queryBBIncludes_subsample()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::queryBBIncludes_subsample </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>min_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>max_bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::uint64_t&#160;</td>
          <td class="paramname"><em>query_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>percent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Recursively add points that fall into the queried bounding box up to the <b>query_depth</b> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">min_bb</td><td>the minimum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_bb</td><td>the maximum corner of the bounding box, indexed by X,Y,Z coordinates </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">query_depth</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">percent</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>std::list of points returned by the query </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;    {</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;      <span class="comment">//check if the queried bounding box has any intersection with this node&#39;s bounding box</span></div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a0dfc9e4699b5197e2a23d71d1d96bb18">intersectsWithBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;      {</div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;        <span class="comment">//if we are not at the max depth for queried nodes</span></div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;        <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#aca2c713beae1004385b63b196a3b3d01">depth_</a> &lt; query_depth)</div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;        {</div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;          <span class="comment">//check if we don&#39;t have children</span></div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;          <span class="keywordflow">if</span> ((<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> == 0) &amp;&amp; (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a3270af407876c73e75df3321f5ecb9ed">hasUnloadedChildren</a> ()))</div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;          {</div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad0e74a5ac5e0bcebb80c569290c4c465">loadChildren</a> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;          }</div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;          <span class="comment">//if we do have children</span></div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a> &gt; 0)</div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;          {</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;            <span class="comment">//recursively add their valid points within the queried bounding box to the list v</span></div>
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;            {</div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;              <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;                <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;queryBBIncludes_subsample (min_bb, max_bb, query_depth, percent, dst);</div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;            }</div>
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;          }</div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;        }</div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;        <span class="comment">//otherwise we are at the max depth, so we add all our points or some of our points</span></div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;        {</div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;          <span class="comment">//if this node&#39;s bounding box falls completely within the queried bounding box</span></div>
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#ad88e68bf251e5f640a4517e00ae42a69">inBoundingBox</a> (min_bb, max_bb))</div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;          {</div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;            <span class="comment">//add a random sample of all the points</span></div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;            AlignedPointTVector payload_cache;</div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;readRangeSubSample (0, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (), percent, payload_cache);</div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;            dst.insert (dst.end (), payload_cache.begin (), payload_cache.end ());</div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;          }</div>
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;          <span class="comment">//otherwise the queried bounding box only partially intersects with this node&#39;s bounding box</span></div>
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;          <span class="keywordflow">else</span></div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;          {</div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;            <span class="comment">//brute force selection of all valid points</span></div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;            AlignedPointTVector payload_cache_within_region;</div>
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;            {</div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;              AlignedPointTVector payload_cache;</div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;              <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;readRange (0, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (), payload_cache);</div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;              <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a5afa8b2a7f8a4f2d21dbcc9cb749c993">payload_</a>-&gt;size (); i++)</div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;              {</div>
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;                <span class="keyword">const</span> <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&amp; p = payload_cache[i];</div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a809db94b3ebf6a4bd150d129b4b1db6d">pointInBoundingBox</a> (min_bb, max_bb, p))</div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;                {</div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;                  payload_cache_within_region.push_back (p);</div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;                }</div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;              }</div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;            }<span class="comment">//force the payload cache to deconstruct here</span></div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; </div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;            <span class="comment">//use STL random_shuffle and push back a random selection of the points onto our list</span></div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;            <a class="code" href="group__model.html#gacfbb156f3953666fe3ee538ceb770f65">std::random_shuffle</a> (payload_cache_within_region.begin (), payload_cache_within_region.end ());</div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;            <span class="keywordtype">size_t</span> numpick = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (percent * <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (payload_cache_within_region.size ()));;</div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; </div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numpick; i++)</div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;            {</div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;              dst.push_back (payload_cache_within_region[i]);</div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;            }</div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;          }</div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;        }</div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;      }</div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;    }</div>
<div class="ttc" id="agroup__model_html_gacfbb156f3953666fe3ee538ceb770f65"><div class="ttname"><a href="group__model.html#gacfbb156f3953666fe3ee538ceb770f65">mets::random_shuffle</a></div><div class="ttdeci">void random_shuffle(permutation_problem &amp;p, random_generator &amp;rng)</div><div class="ttdoc">Shuffle a permutation problem (generates a random starting point).</div><div class="ttdef"><b>Definition:</b> model.hh:258</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a81981aa776d748889cd72b7146e4ffe5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81981aa776d748889cd72b7146e4ffe5">&#9670;&nbsp;</a></span>saveIdx()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::saveIdx </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>recursive</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Save node's metadata to file </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">recursive</td><td>if false, save only this node's metadata to file; if true, recursively save all children's metadata to files as well </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    {</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;      node_metadata_-&gt;serializeMetadataToDisk ();</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;      <span class="keywordflow">if</span> (recursive)</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      {</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 8; i++)</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i])</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;            <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;saveIdx (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        }</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      }</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a64e4a385bd1a8a51d069ae4cac718e5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64e4a385bd1a8a51d069ae4cac718e5e">&#9670;&nbsp;</a></span>writeVPythonVisual()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT , typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::writeVPythonVisual </td>
          <td>(</td>
          <td class="paramtype">std::ofstream &amp;&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write a python visual script to <b>file</b> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>output file stream to write the python visual script </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;    {</div>
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;      Eigen::Vector3d min;</div>
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;      Eigen::Vector3d max;</div>
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;      node_metadata_-&gt;getBoundingBox (min, max);</div>
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; </div>
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;      <span class="keywordtype">double</span> l = max[0] - min[0];</div>
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;      <span class="keywordtype">double</span> h = max[1] - min[1];</div>
<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;      <span class="keywordtype">double</span> w = max[2] - min[2];</div>
<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;      file &lt;&lt; <span class="stringliteral">&quot;box( pos=(&quot;</span> &lt;&lt; min[0] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; min[1] &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; min[2] &lt;&lt; <span class="stringliteral">&quot;), length=&quot;</span> &lt;&lt; l &lt;&lt; <span class="stringliteral">&quot;, height=&quot;</span> &lt;&lt; h</div>
<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;           &lt;&lt; <span class="stringliteral">&quot;, width=&quot;</span> &lt;&lt; w &lt;&lt; <span class="stringliteral">&quot; )\n&quot;</span>;</div>
<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; </div>
<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a2c485ec11c94788d45436620fefe3402">num_children_</a>; i++)</div>
<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;      {</div>
<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html#a9f2fb7fbd7be380212c99017557be57e">children_</a>[i]-&gt;writeVPythonVisual (file);</div>
<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;      }</div>
<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="aca589546f23851a4b6e79dca8ef83181"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca589546f23851a4b6e79dca8ef83181">&#9670;&nbsp;</a></span>num_loaded_children_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename ContainerT  = OutofcoreOctreeDiskContainer&lt;pcl::PointXYZ&gt;, typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint64_t <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">pcl::outofcore::OutofcoreOctreeBaseNode</a>&lt; ContainerT, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::num_loaded_children_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Number of loaded children this node has </p>
<p>"Loaded" means child OctreeBaseNodes have been allocated, and their metadata files have been loaded into memory. num_loaded_children_ &lt;= num_children_ </p>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>outofcore/include/pcl/outofcore/<a class="el" href="octree__base__node_8h_source.html">octree_base_node.h</a></li>
<li>outofcore/include/pcl/outofcore/impl/<a class="el" href="octree__base__node_8hpp_source.html">octree_base_node.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>outofcore</b></li><li class="navelem"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_base_node.html">OutofcoreOctreeBaseNode</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
